最近在項(xiàng)目開發(fā)中遇到一個(gè)前后端分離课竣,跨域下用axios請(qǐng)求無法攜帶cookie的問題朦促,弄了很久童太,記錄一下米辐。
axios默認(rèn)是發(fā)送請(qǐng)求的時(shí)候不會(huì)帶上cookie的胸完,需要通過設(shè)置withCredentials: true來解決。且需要后端配合設(shè)置
header信息?Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin不可以為 '*'翘贮,因?yàn)?'*' 會(huì)和 Access-Control-Allow-Credentials:true 沖突赊窥,需配置指定的地址。
axios全局配置:
axios.defaults.withCredentials?=?true择膝,
后端的配置誓琼,因?yàn)楹蠖瞬捎玫募夹g(shù)棧不同有不同的配置方式,請(qǐng)根據(jù)自身情況自動(dòng)百度肴捉。
前端配置了:withCredentials: true和后端配置了Access-Control-Allow-Origin后大部分情況下跨域是可以攜帶cookie了,可是最近我遇到了一個(gè)比較特殊的情況叔收,這樣設(shè)置后齿穗,在除了chrome外的瀏覽器都可以正常攜帶cookie,然后最近可能是chrome升級(jí)了,在chrome攜帶cookie丟失饺律。怎么也帶不了cookie窃页。明明是登錄成功了,但跳轉(zhuǎn)有新請(qǐng)求發(fā)送又跳出來了复濒,這種情況可能就是谷歌瀏覽器攜帶cookie失效了脖卖,研究了很久找到了解決方案。
參考:https://blog.csdn.net/weixin_39448458/article/details/108323374
解決方法:
一巧颈、谷歌瀏覽器訪問 chrome://flags 畦木,搜索SameSite設(shè)置為disabled即可!
二砸泛、通過后端設(shè)置cookie的SameSite屬性?SameSite = None
具體設(shè)置參考:https://blog.csdn.net/qq_37060233/article/details/86595102
Cookie 的 SameSite 屬性
Chrome 51 開始十籍,瀏覽器的 Cookie 新增加了一個(gè)SameSite屬性,用來防止 CSRF 攻擊和用戶追蹤唇礁。
詳細(xì)介紹SameSite屬性請(qǐng)看阮一峰老師的解釋勾栗,http://www.ruanyifeng.com/blog/2019/09/cookie-samesite.html