這篇文章就跟大家聊聊最近項目遇見的小問題,cookie的SameSite
以前,沒了解過cookie中所有的屬性,最近也是遇到問題了才找資料復習一下
關於cookie的SameSite屬性,我們其實可以看阮一峰老師的這篇:Cookie 的 SameSite 屬性
大致在這里就概況下
1,SameSite 是谷歌瀏覽器針對 cookie 新增的一個屬性,主要作用就是為了防止 CSRF 攻擊和用戶追蹤
那么關於CSRF攻擊是什么,不懂得同學可以看上面那篇阮一峰老師的教程,里面有詳細的說明,我們也一句話概括吧,下面:
Cookie 往往用來存儲用戶的身份信息,惡意網站可以設法偽造帶有正確 Cookie 的 HTTP 請求,這就是 CSRF 攻擊。
2,那么SameSite 屬性到底是怎么實現了防止CSRF攻擊和用戶追蹤呢?
cookie的sameSite屬性就是用來限制第三方網站拿到你的cookie,從而達到減少風險的效果。
比如我們常用的 swagger ,本地測試時,調用login接口,然后查詢其他接口會帶上cookie,
但是如果我們谷歌瀏覽器打開了SameSite開關,然后我們在本地調用測試環境的接口時,會發現其他接口拿不到login的setCookie,從而導致登錄無效
只有我們關閉瀏覽器的sameSite開關,我們才可以獲得不同域名的setCookie
關於SameSite的詳細屬性以及說明,請參考阮一峰老師的教程
那么我們怎么關閉谷歌的SameSite設置呢?
1,首先,我們在谷歌輸入 chrome://flags
2,然后我們輸入框輸入 :SameSite by default cookies、Cookies without SameSite must be secure
3,設置上面這兩項設置成 Disable
然后重啟谷歌就可以關閉這個設置了
當然,如果你不想設置谷歌你也可以通過設置cookie實現訪問
關於cookie的設置
報文里面set-cookie,添加SameSite=None; Secure=true