无法在$ .ajax请求上设置HTTP主机头

Ste*_*rød 2 ajax proxy jquery

这个主题之前已经有过不同的讨论,但我还没有找到适合我的解决方案.我正在使用jquery 1.7.1.

我有一个REST样式的Web服务,可以返回JSON和XML,但对于这个项目,我需要使用XML端点.为了解决跨域限制,我使用Perl的HTTP :: Proxy创建了一个透明代理.这个代理工作轻而易举,因为我可以从任何地方使用HTTP GET客户端与它交谈.

由于它是透明代理,因此它依赖于在客户端请求中设置的主机头.我的代码看起来像这样:

  $.ajax({
    type: "GET",
    crossDomain: true, // not needed I think
    error: function() { alert('Failed ..'); },
    url: "http://www.skiforeningen.no:8080/<remote REST URL>",
    dataType: "xml",
    headers: {'Host': 'remote REST host'},
    success: parseXml,
});
Run Code Online (Sandbox Code Playgroud)

Chrome非常明确,并且说

拒绝设置不安全的标题"主机"

XMLHttpRequest无法加载http://www.skiforeningen.no:8080/sted/Norge/Oslo/Oslo/Skansebakken/varsel.xml.Access-Control-Allow-Origin不允许使用原点http://www.skiforeningen.no

但是代理和带有jquery的HTML页面都位于主机www.skiforeningen.no上.

自触发错误事件处理程序以来,FF也拒绝设置Host头(显然).

谢谢,

gre*_*eut 5

你不能在不同的主机上执行XHR请求,就像错误消息告诉你的那样.不同的端口意味着不同的主机.

请参阅:我可以在与该端口加载的脚本文件不同的端口上使用XMLHttpRequest吗?