CORS XMLHTTPRequest在Chromium 28中不起作用

时间:2013-08-18 20:39:51

标签: ajax cors

我正在尝试发送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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

我确定响应标头可用。很可能你只是没有找到正确的地方。我怀疑您正在查看“响应”标签,而不是“标题”标签中。无论哪种方式,我自己查看了对来自/来自enable-cors.org的请求/响应,很明显,由于响应中缺少“Access-Control- *”标头,该站点不允许跨源请求。所以,你运气不好。

顺便说一下,你为什么要尝试对enable-cors.org提出跨源请求?这是一个静态网站。它的主要目的是向其他人传授CORS。我认为提供某种“沙盒”可能会很不错,这样可以让学习者自己测试CORS。也许这是你可以在与网站相关的论坛中建议的。点击导航栏中的“建议”链接。