【问题标题】:CORS XMLHTTPRequest not working in Chromium 28CORS XMLHTTPRequest 在 Chromium 28 中不起作用
【发布时间】:2013-08-20 15:19:58
【问题描述】:

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

我做错了什么?

【问题讨论】:

  • 让我们看看请求和响应标头。
  • 我更新了请求标头。响应标头在控制台中“不可用”(Chromium 甚至没有发送请求吗?)。我认为这不是 Chromium 特有的,因为上一版本的 Firefox 也失败了。
  • 但是我尝试使用remysharp.com/demo/cors.php,它可以工作。我可能只是针对一个未启用 CORS 的网站(尽管 enable-cors.org 让我感到惊讶)。
  • 你想在这里做什么?你为什么要尝试连接到enable-cors.org,你希望得到什么回应?

标签: ajax cors


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2014-10-07
    • 2011-05-26
    • 2014-10-18
    • 1970-01-01
    • 2018-04-29
    • 2017-09-14
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    相关资源
    最近更新 更多