谷歌浏览器 setCookie失败的原因分析(samesite)

这篇文章就跟大家聊聊最近项目遇见的小问题,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的详细属性以及说明,请参考阮一峰老师的教程

Cookie 的 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

 

posted @ 2020-08-04 11:38  初心啊  阅读(3723)  评论(1编辑  收藏  举报