我目前遇到了一个问题,使用IE10进行跨域ajax调用(在IE10模式下,而不是兼容模式)。
情况:
我有两个域名,http://a
和http://b
。我为http://b
设置了一个cookie。我目前在页面http://a
上。
我想使用XMLHttpRequest进行CORS请求到http://b
(根据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();
这应该确保将cookie附加到请求中;然而,Fiddler跟踪显示没有cookie被附加,并且我收到了401:访问被拒绝
的错误。
服务器已配置为与CORS一起使用,它包括Access-Control标头:
Access-Control-Allow-Origin: http://a
Access-Control-Allow-Credentials: true
(这不应该有任何影响,因为没有OPTIONS预检请求,IE发送的第一个请求是GET,cookie不存在,因此导致401错误)。
此外,这个JS片段在Firefox和Opera中都可以正常工作。
xhrFields: {withCredentials: true}
时出现了相同的行为。 - Rendijs Sxhr.withCredentials
,但仅限于匹配二级域名的页面(例如,http://a.b.com
与http://c.b.com
通信),而当二级域名不匹配时则不支持(例如,http://a.com
与http://b.com
通信)。 - Rendijs Shttp://b.com
的网站上。当withCredentials
设置为true时,Firefox和Opera都会包含该cookie,我还没有尝试过在Chrome和Safari中使用它。 - Rendijs S