最近在項目開發(fā)中遇到一個前后端分離,跨域下用axios請求無法攜帶cookie的問題,弄了很久,記錄一下。
axios默認是發(fā)送請求的時候不會帶上cookie的,需要通過設置withCredentials: true來解決。且需要后端配合設置
header信息?Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin不可以為 '*',因為 '*' 會和 Access-Control-Allow-Credentials:true 沖突,需配置指定的地址。
axios全局配置:
axios.defaults.withCredentials?=?true,
后端的配置,因為后端采用的技術棧不同有不同的配置方式,請根據(jù)自身情況自動百度。
前端配置了:withCredentials: true和后端配置了Access-Control-Allow-Origin后大部分情況下跨域是可以攜帶cookie了,可是最近我遇到了一個比較特殊的情況,這樣設置后,在除了chrome外的瀏覽器都可以正常攜帶cookie,然后最近可能是chrome升級了,在chrome攜帶cookie丟失。怎么也帶不了cookie。明明是登錄成功了,但跳轉有新請求發(fā)送又跳出來了,這種情況可能就是谷歌瀏覽器攜帶cookie失效了,研究了很久找到了解決方案。
參考:https://blog.csdn.net/weixin_39448458/article/details/108323374
解決方法:
一、谷歌瀏覽器訪問 chrome://flags ,搜索SameSite設置為disabled即可!

二、通過后端設置cookie的SameSite屬性?SameSite = None
具體設置參考:https://blog.csdn.net/qq_37060233/article/details/86595102
Cookie 的 SameSite 屬性
Chrome 51 開始,瀏覽器的 Cookie 新增加了一個SameSite屬性,用來防止 CSRF 攻擊和用戶追蹤。
詳細介紹SameSite屬性請看阮一峰老師的解釋,http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html