我在 Microsoft 内部 SharePoint 网站上工作,我需要从跨域 SharePoint 网站中提取列表数据。
出于各种原因,我不想使用 Silverlight,而且目前无法实现业务数据连接。
是否有一种简单的方法可以使用 JavaScript 或类似的东西来完成此任务?
最佳答案
“简单?”不完全是。鉴于您的要求,尤其是“没有服务器端”,这是不可能的。
但是,如果您可以放弃该要求,则可以通过几个选项来启用跨域请求。
CORS
有 decent support对于Cross-Origin Resource Sharing对于 XMLHttpRequest
和微软的 XDomainRequest
.不过,这将要求远程服务器在响应中包含正确的 header ,以允许您的源/域发出请求。
<% Response.AddHeader("Access-Control-Allow-Origin", "*") %>
JSONP
一个常见的选项是 JSONP ,它将资源加载到 <script>
中用callback
具有全局函数名称的参数。由于 JSON 基于 JavaScript 文字,因此不会有相同的浏览器支持问题,但远程服务器必须知道如何构造输出并且它限于 GET
。请求。
// <script src="http://other.dom/resource?callback=loadResource"></script>
loadResource( [ {"id": 1, "name": "foo"}, {"id": 2, "name": "bar"} ] );
服务器端代理
如果您请求的远程服务器不能(或不会)调整为支持跨域请求,您几乎只能在服务器上创建服务器端代理。
一般模式在 AjaxPatters.org 中描述。并且可以找到许多 .NET 实现,包括 John Chapman's和 Cross-Domain Proxy项目。
关于javascript - 在没有服务器端、silverlight、DBC 等的情况下处理 SharePoint Intranet 跨域的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7879371/