我們知道,通過設置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方式作驗證。
