2015-07-20 70 views
0

需要关于sharepoint 2013 Rest API和Ajax Call的帮助。需要关于Sharepoint 2013的帮助需要Ajax调用的Rest API

我在尝试从发布网站读取列表项目到团队网站。这两个网站都在不同的网站集合中。

下面的代码在Internet Explorer中工作正常,而不是在Google Chrome中。

$(document).ready(function() { 
    $.support.cors = true; 
    $.ajax({ 
     url:"http://icon.heart.com/WorkTools/Organization/Claim/_api/web/lists/getByTitle('Claims Links')/items?$top=200", 
     type:"GET", 
     headers:{"accept":"application/json;odata=verbose"}, 
     dataType: "json", 
     success: function(data){ alert("pass")} 
     error: function(Data){ alert ("Fail");} 
    }); 
}); 

该响应具有Http状态码401。从$.ajax请求的错误是

无法加载资源:服务器与401状态(非授权)

错误2回答:

XML的HttpRequest无法加载否“ Access-control-Allow-Origin'标题出现在请求的资源上。 Oringin'url'因此不被允许访问。

我没有访问服务器的权限。我只需要使用SharePoint 2013页面上的脚本编辑器进行尝试。

+0

Chrome/Firefox返回什么错误,以及您使用的是哪个版本的IE? –

+0

@Daniel - 错误1:加载资源失败:服务器响应的状态为401(未授权) 错误2:XML HTtpRequest Canot加载 没有'Access-control-Allow-Origin'标头存在请求的资源。 Oringin'网址'因此不允许访问。结果有Http状态代码401 \t 不幸的是我没有访问服务器。我必须用OOB Controls解决这个问题。我在Sharepoint 2013中使用脚本编辑器运行此!任何想法 ? –

回答

0

由于Chrome拒绝为CORS请求设置Origin标头,因此很有可能发生这种情况。它甚至不会让你明确地覆盖Origin标头。基本上这会导致服务器看到Origin: null,在大多数情况下导致403。 IE/Firefox显然没有这样的限制。

的SharePoint的情况下,解决办法内部部署你可以设置一个custom headerweb.config

<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="*" /> 
</customHeaders> 

或明确指定域:

<customHeaders> 
    <add name="Access-Control-Allow-Origin" value="http://anotherintra.contoso.com" /> 
</customHeaders> 
+0

不幸的是我没有访问服务器。我必须用OOB Controls解决这个问题。我在Sharepoint 2013中使用脚本编辑器运行此!任何想法 –

0

使用OOB脚本,也不会被修复。这些变化需要在Vadim Gremyachev指定的服务器端完成。此外,它可能在IE8中工作,但在IE10中,它会显示一个安全弹出窗口,要求访问来自其他域的数据。

0

检查以下问题我的回答:https://stackoverflow.com/a/32824960/5243272

难道你忘了添加的形式消化?

除了我不确定你使用的listname(空格)是否可以。我认为你必须使用一些特殊的字符。 (提示:总是使用列名和列名,只有一个词没有特殊字符...)