AJAX请求上请求的资源上没有“Access-Control-Allow-Origin”标头

时间:2015-08-21 17:47:34

标签: javascript php ajax

我正在使用JQuery:

$('#myDiv').load('myApp/url',function(){ });

并且它给出了没有'Access-Control-Allow-Origin'标题出现在请求的资源上由Chrome和firefox到目前为止,任何关于如何解决此问题的直接答案。我没有控制服务器来进行任何配置而我正在使用PHP

3 个答案:

答案 0 :(得分:5)

这是一个CORS问题(跨源资源共享),您正试图通过来自两个不同域的ajax请求内容。除非您想要获取数据的域已正确设置CORS标头,否则浏览器将立即取消请求。

这是由于两个不同域之间的通信而发生的。将为您的数据提供服务的域应该设置一些标头,这些标头充当权限,它们告诉哪些域可以从中请求数据,以及允许哪些动词/方法。

您可以详细了解此herehere

答案 1 :(得分:1)

不,这不是一个直接的答案,因为它完全取决于您的系统/服务器设置,以及您可以访问的内容。这是你需要知道的。

一开始--AJAX请求有一个非常严格的&#34;相同的起源&#34;政策。这意味着如果您从包含域example.com的网站发出了ajax请求,则只能向发送 <{1}}上的网址。

近年来,浏览器已经放松了。如果您正在向 发送请求的服务器具有example.com标头,并且该标头包含您正在发出请求的服务器的网址/域,然后将允许该请求。类似question/answer here

因此,您设置此标头的 取决于您向其发出请求的服务器。如果您可以控制此服务器,请在那里开始使用Google搜索。

如果您无法控制此服务器,则需要向您的服务器上的Access-Control-Allow-Origin页面发出请求,此PHP页面应为{{1向具有您不知道的信息的服务器请求。在浏览器外发生的php请求不会受到相同的跨域问题的影响。

答案 2 :(得分:-2)

简单的方法是手工完成:

var script = document.createElement('script');
script.src = uri;
script.id = 'scriptid';
document.head.appendChild(script);

这可能是一些浏览器兼容性问题,但是您获得了CORS的强大功能而没有“访问控制 - 允许 - 来源”#39;错误