【问题标题】:Make a CORS request in IE9 with cookies?在 IE9 中使用 cookie 发出 CORS 请求?
【发布时间】:2012-06-12 01:35:41
【问题描述】:

在 IE9 中,我尝试使用 cookie 进行跨源请求。但是,即使我将 Access-Control-Allow-Origin、Access-Control-Allow-Credentials、Access-Control-Allow-Methods 都设置为适当的值(原始域、true 和 GET、POST),IE9仍然没有从请求中发送或设置 cookie。这是我正在使用的脚本:

var xdr = new XDomainRequest()
xdr.open("http://mydomain.com/cors.php")
xdr.withCredentials = true;
xdr.send();

知道如何让 cookie 在 IE9 中处理 CORS 请求吗?

【问题讨论】:

  • 杰夫你找到解决方案了吗?也许您可以将 cookie 信息作为查询参数发送作为解决方法?

标签: cookies internet-explorer-9 xdomainrequest


【解决方案1】:

从此页面底部的http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx 可以看到Update: Internet Explorer 10 now supports CORS using XMLHTTPRequest. 这意味着在IE9 中没有正确处理CORS。对不起。他们在同一篇文章中提出了一些使用代理的解决方法。

浏览器兼容性矩阵在http://caniuse.com/cors 给出,其中部分支持的意思是

Internet Explorer 8 通过 XDomainRequest 对象提供支持,但不支持凭据请求 http://code.google.com/p/sgvizler/wiki/Compatibility

【讨论】:

  • 也许 XHR 对象在 IE10 中工作得更好 - 但它不会发送所有的 cookie。
  • 我可以确认它只在 IE10+ 中正常工作。 IE9 和 IE8 必须使用 XDR,这很糟糕,因为内容类型必须是 text/plain 并且不能使用 cookie。顺便说一句,没有代理(或 cURL)适用于 cookie,因为出于安全原因也禁止跨域 cookie。
  • 更新注意我相信在 Windows10 之前的任何东西上的 IE10 和 IE11 仍然需要在服务器上设置它们的特殊 P3P 策略标头,以便服务器从客户端读取服务器域 cookie用这种方式浏览器。
【解决方案2】:

根据我的经验,如果两个域都在您的控制范围内,最好使用postMessage

【讨论】:

猜你喜欢
  • 2021-05-29
  • 2018-07-20
  • 2016-07-21
  • 1970-01-01
  • 1970-01-01
  • 2012-02-10
  • 2020-09-13
  • 1970-01-01
相关资源
最近更新 更多