0

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

我做错了什么?

4

1 回答 1

1

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

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

于 2013-08-19T14:43:02.810 回答