Javascript 如何在不使用XDomainRequest或XMLHttpRequest的情况下使用自定义头进行跨域请求?

Javascript 如何在不使用XDomainRequest或XMLHttpRequest的情况下使用自定义头进行跨域请求?,javascript,internet-explorer,xmlhttprequest,cross-domain,xdomainrequest,Javascript,Internet Explorer,Xmlhttprequest,Cross Domain,Xdomainrequest,我有一个来自www.example.com的单页web应用程序。这是一个web应用程序 需要对另一个名为api.example.com 向api.example.com 它必须与最新和不太新的浏览器兼容(例如IE>=8) 所有这些都是通过在api.example.com上使用Chrome(以及其他最新的基于WebKit的浏览器)使用XMLHttpRequest处理CORS请求来实现的。不为XMLHttpRequest实现CORS,而是为跨域请求提供非标准的XDomainRequest对象。但

我有一个来自
www.example.com
的单页web应用程序。这是一个web应用程序

  • 需要对另一个名为
    api.example.com
  • api.example.com
  • 它必须与最新和不太新的浏览器兼容(例如IE>=8)
所有这些都是通过在api.example.com上使用Chrome(以及其他最新的基于WebKit的浏览器)使用
XMLHttpRequest
处理CORS请求来实现的。不为
XMLHttpRequest
实现CORS,而是为跨域请求提供非标准的
XDomainRequest
对象。但是
XDomainRequest
没有实现一种访问字段的方法

因此,我的问题是:如何在不使用
XDomainRequest
XMLHttpRequest
的情况下使用自定义头进行跨域请求?最佳实践解决方案是什么


编辑:我可以控制所有涉及的服务器(*.example.com)。

恐怕除了在应用程序的服务器端实现此请求的代理之外,别无选择

这是正确的。您可以始终使用iframe和
postMessage
。因此,我认为至少还有一种方法:)我不知道存在postMessage这样有用的方法,所以感谢@idbehold。您需要控制api.example.com,因为您必须将iframe内容放在该域中。此外,您似乎只能在IE中发送带有postMessage的字符串。要在IE中发送字符串,您只需在发送时
JSON.encode()
,然后在接收时
JSON.decode()