CORS XMLHTTPRequest在Chromium 28中不起作用



我试图发送CORS AJAX请求,但似乎失败了:

var xhr = new XMLHttpRequest();
xhr.open("GET", "http://enable-cors.org");
xhr.addEventListener("load", function() { console.log(this.responseText); });
xhr.send();

我在浏览时从控制台发出此请求http://stackoverflow.com.

我收到这个错误消息:

XMLHttpRequest cannot load http://enable-cors.org/. Origin http://stackoverflow.com is not allowed by Access-Control-Allow-Origin. 

我认为enable-cors.org应该发回正确的Access-Control-Allow-Origin标头:)但这对任何其他网站都适用。

此外,console告诉我已经在我的请求中正确发送了Origin头。

我正在使用Chromium 28,但Firefox也失败了。

HTTP请求标头为:

Request URL:http://enable-cors.org/
Origin:http://stackoverflow.com
Referer:http://stackoverflow.com/posts/18303449/edit
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.95 Safari/537.36

我做错了什么?

我确信响应头是可用的。很可能你只是看不到正确的地方。我怀疑你看的是"响应"选项卡,而不是"标题"选项卡。不管怎样,我自己看了enable-cors.org的请求/响应,很明显,由于响应中缺少"Access Control-*"标题,该网站不允许跨来源请求。所以,你运气不好。

顺便说一句,你为什么要试图向enable-cors.org发出跨来源请求?这是一个静态网站。它的主要目的是教别人CORS。不过,我认为提供某种"沙盒"让学习者自己测试CORS可能会很好。也许这是你可以在与网站相关的论坛上提出的建议。点击导航栏中的"建议"链接。

最新更新