18

由于 jQuery ajax 不适用于 CORS/IE,因此我XDomainRequest用于从另一台服务器检索数据。工作很好,但我想发送一些标题('Authentification','content-type')。

是否有机会在 XDomainRequest 中添加/更改标头?

或者有人知道解决方法吗?

4

2 回答 2

17

这就是我们为 IE 所做的。

如果您可以控制目标域,请在其中托管一个(静态)html 文件。使用 iframe 包含 html。

现在这个 iframe 确实可以访问本地域,因此您可以在父框架和子框架之间进行通信以获得所需的内容。

这对我们来说比 XDomainRequest 好得多

window.postMessage是设置通信的最佳方式:

但我很确定它是从 IE8 开始工作的。如果您还需要较旧的浏览器,则必须使用不同的 hack。

在我们的例子中,这是我们的 3 层系统:

  1. CORS,适用于支持它的浏览器
  2. 一个 iframe 和 window.postMessage 作为主要的后备
  3. 服务器端代理脚本作为辅助后备

所有这些选项都运行良好,可靠并且感觉不太像黑客。次要后备几乎从未使用过。

请记住,“身份验证”标头是特殊的,无论如何在某些情况下被阻止,我不会感到震惊。我们添加了一个自定义标头“X-Authenticate”,因为它一直通过。

于 2012-03-13T17:55:17.947 回答
2

IE 的 XDomainRequest 不允许设置自定义标头。请参阅此处的第 3 项:http: //blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx XDomainRequest 对象被锁定到它所在的位置很难发出经过身份验证的请求。

于 2012-03-11T21:14:50.747 回答