明天在chrome浏览器中察看申请信息时发现了这样一个正告:

咦,看起来像是阻止了我的 cookie 发送。通过查问方知,原来谷歌为了避免CSRF攻打,曾经逐渐开始启用 SameSite 这个cookie属性,以更强制的伎俩来升高 CSRF 的危险。而这个个性从76版本后,就曾经开始逐渐退出到 chrome 稳定版当中了。我看了下本人的 chrome,赫,都曾经 84版了,必然命中这个个性了。

咱们去chrome开发工具里看一下cookie的属性家族。哇看起来,cookie属性家族真是越来越宏大了:

SameSite 是干嘛的

咱们来看下 sameSite 到底是个什么鬼货色。从MDN文档能够看到: samesite能够阻止浏览器在跨域申请里携带cookie。

在默认状况下,该属性的值是 Lax,即松散的意思,这个所谓的松散绝对于以前来说其实并不松散,它是 只容许 GET 跨域申请携带

另外一个值是 strict,即严格模式,严格标记将阻止cookie被浏览器发送到所有跨域指标网站,即便是惯例的GET申请。

怎么绕过这个限度呢

尽管绕过是不平安的。然而有些场景是没有太严格的要求的,例如统计日志数据的 cgi。除了上述2个值之外,还能够将他申明为 none。通过显式申明SameSite = None,开发人员依然能够不受限制的应用跨域cookie。

浏览器反对状况

从Chrome 76开始,通过启用默认默认cookie标记,该性能将可用。从2020年7月14日开始,此性能将逐渐向Stable用户推出。但MacOS上还有BUG(如果设置为none,成果会变成strict)。另外一个bug就是我本人电脑上加上samesite进行设置cookie是有效的,目前还不分明起因,如果有大佬晓得为啥不失效,还请心愿大佬赐教。