ASP.Net中的jQuery Ajax调用到SharePoint 2013 REST服务(跨域)访问已拒绝

时间:2014-03-11 15:19:54

标签: jquery asp.net ajax rest sharepoint

我有一个SharePoint 2013网站和一个ASP.Net网站。我在我的ASP.Net站点添加了一些jquery,使用$ .ajax jquery方法从我的SP2013站点调用REST svc。当它调用xhr.Open时,我在jquery-1.4.1.js第4984行得到“Access Denied”。我正在使用IE8(我相信我的所有客户也将使用IE8。)

这是在更新版本的jQuery中解决的问题吗?

我是否可以在IIS级别(思考应用程序池配置......?)来缓解这种情况?

任何线索?

SP.RequestExecutor可以使用,还是只适用于SP应用程序而不是真正用于ASP.Net网站?更多 - http://msdn.microsoft.com/en-us/library/fp179927.aspx

提前致谢。

4 个答案:

答案 0 :(得分:0)

您应该将dataType jsonp用于跨域请求,将dataType json用于相同的域同一来源请求。

$.ajax({
    url: "otherdomain.com",
    dataType: "jsonp",
    data: "",
    success: function( response ) {
        console.log( response ); // server response
    }
});

答案 1 :(得分:0)

除了解决可能的跨域问题的JSONP之外,值得指出的是,除了具有多个端点的搜索服务之外,SharePoint中的所有REST服务都需要默认情况下进行身份验证。

具体取决于您尝试做什么this post may offer some useful pointers

答案 2 :(得分:0)

您正在处理跨域问题。您可以使用CORS(http://enable-cors.org/)或在与ASP.NET应用程序相同的域上构建包装器Web服务,该应用程序将从ASP.NET应用程序调用REST服务。

如果我错了,请纠正我,JSONP将不适用于此,因为REST sharepoint Web服务不提供JSON响应。

答案 3 :(得分:0)

我对此进行了一些调查,发现了" parsererror"是因为SP 2013 REST返回RSS ATOM提要,而不是json提要。将dataType设置为xml时,它将正确解析它,然后您可以使用"条目"节点到达重要数据所在的项目" m:properties"节点。总而言之,dataType = xml,跨域

需要cors = true