BasicAuth在IE8 / 9上启用了CORS请求

时间:2014-01-13 20:11:06

标签: javascript internet-explorer cors

所以,这发生了。快速要点事实清单:

  • 我有一个HAL后端,它位于不同的子域中,但是(谢天谢地支持IE10)与我的网络应用程序在同一个域中。
  • 我需要发出POST和GET请求。
  • 我不需要IE7或更低版​​本的支持。
  • 我需要支持IE8及以上。
  • 构建API的方式,我需要发送自定义标头并能够访问响应标头。其中一个是basicAuth标头,但可能还有更多(如位置响应标头和诸如此类)。
  • 我很清楚XDomainRequest对象的局限性。
  • 我可以完全控制API和Web应用服务器,代码以及介于两者之间的所有内容。然而,我们认为API构建良好且不应因为一个浏览器的不良实现而发生变化,因此我们希望至少对其进行更改。

这就是事情的进展。到目前为止,我已经检查了一些不起作用的替代方案。以下是它们的列表以及在这种情况下它无效的原因:   - JSONP,它只允许GET请求。   - easyXDM,它不允许发送自定义标头。   - OpenAjax Hub,文档似乎令人困惑和稀缺,但它似乎也不支持自定义标题。

所以这就是问题:我有什么解决方案吗?我现在唯一的希望是构建一个自定义swf并覆盖jQuery的$ .ajax函数,以便能够将其用作传输,但我不确定它是否可行。从理论上讲,它应该。在实践中......嗯,这完全是另一回事。在深入研究瑞士法郎的深处之前,我想我可能会问以前有没有人遇到过这个问题并提出任何形式的建议?

1 个答案:

答案 0 :(得分:2)

您缺少一个嵌入式iframe,其src位于另一个域上,并使用window.postMessage在两个窗口之间来回移动,其中嵌入式iframe为您的子域执行所有XHR,然后发送返回一个自定义包装的响应,其中包含您通常在CORS中看到的所有标头/数据。

然后你将获得IE8 / 9支持。