我們知道,通過設置Access-Control-Allow-Credentials: true
和xhr.withCredentials = true
,可以實現跨域傳遞Cookie
. 達到保存用戶登錄態等目的。但使用不當,也會有CSRF風險。
所以,從Chrome 51
開始,瀏覽器的Cookie
新增加了一個SameSite屬性,用來防止CSRF
攻擊和用戶追蹤。
該設置當前默認是關閉的,但在Chrome 80
之后,該功能默認已開啟。
所以當你無法使用某些網站第三方登錄功能的時候,請查看一下是否受到了該設置的影響。
- 對於使用者,快速解決方案:
方案1. 打開
Chrome
設置,將chrome://flags/#same-site-by-default-cookies
禁用,然后重啟瀏覽器。
方案2. 使用低版本瀏覽器,可選擇極速360。 - 對於開發者,解決方案:
方案1. 將
SameSite
屬性值改為None
, 同時 將secure
屬性設置為true
。且需要將后端服務域名必須使用https
協議訪問。
方案2. 由於設置SameSite = None
,有SCRF
風險,所以,最佳方案是用token
代替Cookie
方式作驗證。