Chrome 80
版本在跨域名登录时存在问题,可能会使页面陷入死循环的状态,导致用户无法正常登录。这主要是由于这个版本中,Chrome 的策略有所更新。
在旧版浏览器,如果 SameSite
属性没有设置,或者没有得到运行浏览器的支持,那么它的行为等同于 None
,Cookies
会被包含在任何请求中——包括跨站请求。
但是,在 Chrome 80+
版本中,SameSite
的默认属性是 SameSite=Lax
。换句话说,当 Cookie
没有设置 SameSite
属性时,将会视作 SameSite
属性被设置为Lax
。如果想要指定 Cookies
在同站、跨站请求都被发送,那么需要明确指定 SameSite
为 None
。具有 SameSite=None
的 Cookie
也必须标记为安全并通过 HTTPS
传送。
在 Chrome 88
之前,您将能够使用策略还原为旧版 Cookie
行为。您可以使用 LegacySameSiteCookieBehaviorEnabledForDomainList
指定受信任的域,也可以使用 LegacySameSiteCookieBehaviorEnabled
控制全局默认值。有关更多详细信息,请访问 Cookie旧版SameSite政策
:https://www.chromium.org/administrators/policy-list-3/cookie-legacy-samesite-policies。
以上更新可能对以下功能造成影响:
- 跨域名登陆失效
-
jsonp
获取数据失效 -
iframe
嵌套的页面打不开或异常 - 部分客户端未改造导致各种数据获取异常
建议大家针对上述更新对自己的站点功能在新版浏览器下做一些测试,以免影响功能正常使用。
你可以到 chrome://flags/
开启 SameSite by default cookies
、Cookies without SameSite must be secure
进行测试。