簡體   English   中英

IE 11 未發送 cookies 和 CORS 獲取請求

[英]IE 11 not sending cookies with CORS get request

我正在從 localhost:8090 進行 ajax GET 調用,具體如下:

$.ajax({
              url: 'https://dev-855592.okta.com/api/v1/sessions/me',
              method: 'GET',

              dataType: 'json',
              xhrFields: {
                   withCredentials: true
              },
              crossDomain: true,
              success : function(data){
                  console.log(data);
              },
              error : function(data){
                console.log('Session not found');
              },
        });

由於這是一個 Okta 調用,它需要 cookies 與請求一起發送。 但是 IE 11 沒有在請求中發送任何 cookies 。

我已經嘗試過一些事情:“跨域訪問數據源:已啟用”在受信任站點的 ie11 設置中。 該解決方案有效。

但我不希望對最終用戶產生任何影響,假設最終用戶已經接受了第三方 cookies,那么實現這一目標的最佳方法應該是什么?

如果要在 IE 11 中啟用 CORS 請求,您的服務器必須將以下標頭附加到所有響應:

Access-Control-Allow-Origin: http://example.com
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: ACL, CANCELUPLOAD, CHECKIN, CHECKOUT, COPY, DELETE, GET, HEAD, LOCK, MKCALENDAR, MKCOL, MOVE, OPTIONS, POST, PROPFIND, PROPPATCH, PUT, REPORT, SEARCH, UNCHECKOUT, UNLOCK, UPDATE, VERSION-CONTROL
Access-Control-Allow-Headers: Overwrite, Destination, Content-Type, Depth, User-Agent, Translate, Range, Content-Range, Timeout, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Location, Lock-Token, If
Access-Control-Expose-Headers: DAV, content-length, Allow

或者,您還可以附加 Access-Control-Max-Age header 指定預檢請求將被緩存的秒數,這將減少請求量:

Access-Control-Max-Age: 3600

您可以參考此鏈接,了解為特定服務器實現 CORS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM