Chrome升级到80版本遇到的问题-系统登录不了的解决方法

背景

随着疫情的减弱,2020年3月份公司开始复工,复工的第n天我打开Chrome浏览器发现可以升级到80版本了,于是升级,看着关于Chrome前面那个对勾真的开心。
在这里插入图片描述
完了后开始一天的日常任务,打开vscode,启动项目,然后登录系统,WTF,为什么登录后又跳到登录页了???控制台也多了下面这个警告。
在这里插入图片描述

找到问题

换了Firefox、360极速都是可以正常登录的,所以这个情况只在Chrome浏览器中有问题。然后看控制台报的警告,发现是SameSite这个属性造成的。经过百度80版本更新日志和查找一些博客发现80版本SameSite这个属性默认值由None变为Lax了。

Cookie 的SameSite属性用来限制第三方 Cookie,防止CRSF(跨站请求攻击)攻击,从而减少安全风险。
SameSite可以设置以下三个值:

  1. Strict
    Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。
Set-Cookie: CookieName=CookieValue; SameSite=Strict;
  1. Lax
    Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。
Set-Cookie: CookieName=CookieValue; SameSite=Lax;
  1. None
    接受第三方Cookie
Set-Cookie: widget_session=abc123; SameSite=None

由于我项目在本地,连接的是线上的服务器,请求地址不同,后台接口响应头Set-Cookie中也没设置SameSite这个属性,所以用的默认值,80版本以前是SameSite=“None”,可以接收到线上地址的Cookie,所以就可以登录成功。但是80版本后变为了SameSite=“Lax”,获取不到线上地址的Cookie,所以登录后后台服务器没接收到Cookie,就重新跳转到登录页。

解决方法

方法一:找后台小姐姐帮忙
找后台在接口响应头中的Set-Cookie中加SameSite=None; Secure

80版本后,网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。感觉Chrome强迫你支持HTTPS啊。

下面的设置无效。

Set-Cookie: widget_session=abc123; SameSite=None

下面的设置有效。

Set-Cookie: widget_session=abc123; SameSite=None; Secure

方法二:修改浏览器配置
这个方法只适用于测试环境。线上环境的话就不行了,你不可能强迫别人浏览器都改配置吧。

chrome://flags/#same-site-by-default-cookies

Treat cookies that don’t specify a SameSite attribute as if they were SameSite=Lax. Sites must specify SameSite=None in order to enable third-party usage.

SameSite by default cookies这个配置主要是说如果不设置SameSite就默认SameSite=“Lax”,站点必须指定SameSite=None以启用第三方使用。

chrome://flags/#cookies-without-same-site-must-be-secure

If enabled, cookies without SameSite restrictions must also be Secure. If a cookie without SameSite restrictions is set without the Secure attribute, it will be rejected. This flag only has an effect if “SameSite by default cookies” is also enabled.

Cookies without SameSite must be secure这个配置是说如果启用,没有SameSite限制的Cookie也必须是安全的。如果设置了SameSite=“None”,但是没有设置Secure,它将被拒绝。此配置只有在“SameSite by default cookies”配置开启的情况下才有效。

所以只需要将SameSite by default cookies设置为Disabled就好了。

方法三:回退到80版本前或者换个浏览器(不推荐)
如果你不习惯换个浏览器的话就重新安装个80版本之前的。如果你习惯换个浏览器,那也只能解决一时之需,后面其他浏览器应该也会更新这个功能。这个方法也只适用于测试环境。

参考

Cookie 的 SameSite 属性
SameSite Cookie介绍
Chrome 80发布更新内容

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值