我们知道,通过设置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
方式作验证。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。