这个主题之前已经有过不同的讨论,但我还没有找到适合我的解决方案.我正在使用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头(显然).
谢谢,