【问题标题】:HEAD XMLHttpRequest on ChromiumChromium 上的 HEAD XMLHttpRequest
【发布时间】:2011-04-29 02:04:00
【问题描述】:

我正在尝试使用 Chromium 中的 XMLHttpRequest 获取 HEAD 响应以检索压缩 url 的位置 URL,但它失败了:

var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() { if (ajax.readyState == 4) alert(ajax.getResponseHeader("Location")) };
ajax.open('HEAD', "http://bit.ly/4Agih5", false);
ajax.send();

// Refused to get unsafe header "Location"
// Error: NETWORK_ERR: XMLHttpRequest Exception 101

【问题讨论】:

  • 这只会在 Chrome 上失败?我不太确定你可以做你正在尝试跨域的事情。

标签: javascript ajax google-chrome xmlhttprequest google-chrome-extension


【解决方案1】:

正如 Mohamed 所说,您必须在托管页面的同一站点上创建代理服务,因为这是一个跨域请求。

这应该在所有浏览器中都失败,除非您在浏览器中明确允许跨域请求。如果 bit.ly 通过 W3C spec 支持 Access-Control-Allow-Origin 的跨域请求,那么您的代码就可以工作。

【讨论】:

  • 在谈到 W3C 访问控制规范时,您的语言有点奇怪。您还指的是不存在的标头 (Access-Control-Allow-Max-Age),而您实际上是在谈论 Access-Control-Allow-Origin
  • 为您(以及之后的人)修复了它
【解决方案2】:

您不能进行跨域 XHR。使用 JSP/Python/PHP/Ruby/等网络编程语言。

【讨论】:

    猜你喜欢
    • 2011-06-01
    • 2013-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多