我目前在使用IE10進行跨域AJAX調用時遇到問題(在IE10模式下,不兼容)。Internet Explorer 10忽略XMLHttpRequest'xhr.withCredentials = true'
情況: 我有兩個域,http://a
和http://b
。我有一個爲http://b
設置的cookie。我目前在頁面http://a
。
我想做一個CORS請求http://b
使用XMLHttpRequest的(這應該工作,根據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: Access Denied
。
服務器被配置爲與CORS工作,它包括:存取控制標頭:
Access-Control-Allow-Origin: http://a
Access-Control-Allow-Credentials: true
(這不應當有什麼區別,因爲沒有OPTIONS預檢請求,所述第一請求IE發送是一個GET,並且該cookie不存在,從而導致401)。
此外,JS代碼段在Firefox和Opera中均可正常工作。
注:我看到相同的行爲使用jQuery的時候,用'xhrFields:{ withCredentials:真 }' – Luuseens
我沒有IE10 ,但我有一個CORS測試網站。你可以在IE10中試用下面的請求,看看它是否有效?只需點擊「發送請求」按鈕,看看反應是什麼。我剛剛嘗試過,它在Chrome中可以正常工作。如果它在IE中不起作用,它可能是一個錯誤:http://client.cors-api.appspot.com/client?server.enable=true&server.credentials=true&server.httpstatus=200&client.method=GET&client.credentials = true – monsur
@monsur - 我做了一些更多的測試。 IE10在您提供的頁面中工作,似乎IE10在具有匹配的二級域名(例如'http:// abcom'與'http:// cbcom'交談)的頁面上支持'xhr.withCredentials' ,但當二級域名不匹配時(例如http://a.com與http://b.com對話) – Luuseens