ajax - 如何从 Sharepoint Web 部件进行跨域 AJAX POST 调用?

标签 ajax sharepoint json web-parts cross-domain

我需要像 POST 调用一样调用 (HTTP) REST API - 基本上,它允许我向论坛/社区发布消息。

由于目前无法通过 API 进行身份验证,因此我需要依赖浏览器 cookie。即,让用户登录社区,然后使用 API 调用。这意味着服务器代理被排除。

由于它是 POST 调用,因此 JSONP 也被排除在外,即使 API 的服务器支持它。

所以这个 POST 调用需要 100% javascript。

此 JS 最终将成为 Sharepoint 中 Web 部件的一部分,因此我真的不想使用 iframe 使其变得复杂。

嗯?

最佳答案

执行跨域 POST 的唯一方法是编写表单脚本:

<iframe name="iframe"></iframe>
<form id="foo" target="iframe" method="POST" action="http://...">
    <input type="hidden" name="parameter 1" value="bar"/>
    ...
</form>
<script type="text/javascript">
    ...
    document.getElementById('foo').submit();
</script>

由于同源策略,您将无法读取 iframe 中的响应,但将进行 POST。

任何知道自己在做什么的论坛都会拒绝此请求。否则,任何访问第三方网站的人都可能会违背自己的意愿自动在论坛上发帖。这称为跨站点请求伪造 (XSRF),是一个长期存在的网络安全问题。大多数论坛管理员会认为上述代码是敌对的。

安全论坛使用“反 XSRF”每次操作 token 来防止上述情况,本质上要求从网站本身的表单而不是从第三方网站发布帖子。由于无法读取包含跨域的文档,因此无法捏取 token ,因此无法授权发帖。

关于ajax - 如何从 Sharepoint Web 部件进行跨域 AJAX POST 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3829542/

相关文章:

javascript - Angular 旋转器 |跳过 $http.post 错误处理

javascript - 如何获取单独变量中的数组值

sharepoint - 工作流程: How to Create/Update an Item if it Exists or Does Not

Javascript - 需要使用通用类的元素

php - 有没有办法可以查询 mysql 并将 json 数据内部连接在一起?

javascript - 如何在 Angularjs 中创建 json 对象

jquery - 我怎样才能做一个 HTTPS-TLS JQuery Ajax Post?

javascript - 在 Ajax 调用中设置自定义 Content-Type 响应 header ?

javascript - 改进了用于折叠 SharePoint 任务列表的脚本

json - Jackson 支持没有注释和专用 bean 字段的多态性