CORS 跨域攜帶 Cookie 傳送請求

2021-09-13 13:11:09 字數 903 閱讀 9395

當在 a.com 進行訪問時,如何向 b.com 攜帶 b.com 的 cookie 傳送乙個請求?

a.com 是乙個第三方**,需要通過訪問 b.com 的介面來獲取使用者的一些資訊。這時候,b.com 上的使用者已經登入了。

我們知道,在傳送跨域請求時,需要後端設定一些請求頭,否則瀏覽器不會允許客戶端跨域傳送請求。

access-control-allow-origin: a.com
這樣,a.com 便可以呼叫 b.com 的介面了。

但是,這樣呼叫過去會發現,b.com 會返回使用者未登入。原因是 b.com 的 cookie 沒有傳送過去。

這時候需要後端新增另外乙個請求頭:

access-control-allow-credentials: true
前端在傳送請求時也需要設定

xhr.withcredentials= true; //關鍵句

xhr.open("get", url);

xhr.send();這樣,後端就可以接收到前端攜帶的 cookie 了。

綜上所述,前端需要在傳送 xmlhttprequest 的時候加上

xhr.withcredentials= true;
後端需要設定請求頭(表示你信任 a.com 並允許 a.com 帶上你的憑據):

access-control-allow-origin: a.com //這裡需要換成相應的發起請求的網域名稱

access-control-allow-credentials: true

跨域請求攜帶cookie

之前寫過乙個第三方登入的方案,就是利用tomcat session和cookie配合的方式來完成第三方跨域登入。在時間做的過程中碰到了乙個問題,就是在回寫瀏覽器的cookie時發現一直寫不進去,針對這個問題做了仔細的檢查,原來的採用ajax傳送跨域請求的時候預設是不會攜帶cookie的,如果需要允許...

ajax 跨域攜帶COOKIE

背景 專案中用pdf.js外掛程式開啟pdf流文件 這個問題屬於ajax跨域攜帶cookie的問題,找了一篇博文的解決方案。1,原生ajax請求方式 xhr.withcredentials true 支援跨域傳送cookies xhr.send 2,jquery的方法請求 ajax crossdom...

CORS跨域傳送Cookie

由於預設情況下瀏覽器對跨域請求不允許攜帶cookie,所以這次開發再與前端同學在許可權驗證這塊踩了好多坑,故將一些教訓寫下來,共勉!在 2014 年 w3c 發布了 cors recommendation 來允許更方便的跨域資源共享,同時cors也允許我們使用額外的相應頭字段來允許跨域傳送cooki...