Ren*_*s S 20 javascript ajax internet-explorer cors
我目前在使用IE10进行跨域ajax调用时遇到问题(在IE10模式下,不兼容).
情况:我有两个域名,http://a
和http://b
.我有一个cookie设置http://b
.我目前在页面上http://a
.
我想做一个http://b
使用XMLHttpRequest 的CORS请求(根据http://blogs.msdn.com/b/ie/archive/2012/02/09/cors-for-xhr-in-ie10.aspx,这应该可行.),并在请求中包含cookie.JS如下:
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://b', true);
xhr.withCredentials = true;
xhr.send();
Run Code Online (Sandbox Code Playgroud)
这应该确保cookie附加到请求; 然而,Fiddler跟踪显示没有附加cookie,我得到了401: Access Denied
.
服务器配置为使用CORS,它包括Access-Control标头:
Access-Control-Allow-Origin: http://a
Access-Control-Allow-Credentials: true
Run Code Online (Sandbox Code Playgroud)
(这不应该有任何区别,因为没有OPTIONS预检请求,并且IE发送的第一个请求是GET,并且cookie不存在,从而导致401).
此外,JS代码段在Firefox和Opera中均可正常运行.
Ano*_*mie 24
它可能与旧的IE P3P问题相同.使用IE的默认设置,如果设置的cookie没有响应中也存在P3P标头,则cookie将标记为"仅第一方".这意味着在第三方上下文中,例如iframe或CORS请求,IE将拒绝发送cookie.
要解决此问题,您需要在设置cookie时提供P3P标头.有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ms537343%28v=vs.85%29.aspx.
更新:链接已经死了,但您可以在Internet Archive中看到它
归档时间: |
|
查看次数: |
26151 次 |
最近记录: |