2016-04-29 66 views
1

我在Windows 8 Enterprise上使用IE v10.0.9200.xxx。使用CORS時,IE10不發送cookie

執行CORS請求時Cookie不會發送到IE10!

適用於鉻合金!使用chrome時,我可以訪問cookie。 該請求正常工作,我得到的數據,但在服務器端我沒有cookies.And我檢查它,有我的IE10頁面實例中的cookie。

Access-Control-Allow-Origin和Access-Control-Allow-Credentials標題設置正確! 使用IE10時,我有什麼要遵守的嗎? IE瀏覽器一直是特定:-)

$.ajax({ 

    type: 'GET', 
    url: 'https://mywebapi.dev/api/Values', 
    contentType: 'text/plain', 
    dataType: "json", 

    xhrFields: { 

     withCredentials: true 
    }, 
    headers: { 
    }, 
    success: function (data, msg, xhr) { 
     alert(data); 
     alert(msg); 
    }, 
    error: function (xhr, error) { 
     } 
}); 

在我的Web API消息處理程序: 共享,安全= TRUE,僅Http =假

r.SetCookie("CookieName", "CookieValue", true, DateTime.Now.AddYears(10), false, "/", true, ""); 

回答

0

我加了P3P頭到我的網頁API response.headers集合:

r.Headers.Add("P3P", "CP=\"CURa ADMa DEVa CONo HISa OUR IND DSP ALL COR\""); 

我沒有檢查P3P值的含義,因此請注意您設置了哪個值。 正如我已閱讀並理解,值可以是任何東西"CP='XYZ'"

但是,一個問題仍然存在。使用IE10,我只能從我的web api發佈的CORS客戶端獲取Cookie設置。當我使用Chrome瀏覽器時,我會在我的web api中獲取所有cookie!

Answer

的.withCredentials屬性將包括任何cookie從該請求中的遠程 域,它也將設置從 遠程域的任何cookie。請注意,這些Cookie仍然遵守同源 政策,因此您的JavaScript代碼無法從 document.cookie或響應標頭中訪問cookie。它們只能由遠程域控制 。

在IE10中添加自定義標題時,請求被中止。

headers: { 
       /// request is aborted in IE10 when using custom header, 
       /// works in Chrome issueing a options preflight request 
       "AUTHORIZATION": "dev-client" 
}