Chrome80 跨域名登录失效的问题

Chrome 80 版本在跨域名登录时存在问题,可能会使页面陷入死循环的状态,导致用户无法正常登录。这主要是由于这个版本中,Chrome 的策略有所更新。

在旧版浏览器,如果 SameSite 属性没有设置,或者没有得到运行浏览器的支持,那么它的行为等同于 NoneCookies 会被包含在任何请求中——包括跨站请求。

但是,在 Chrome 80+ 版本中,SameSite 的默认属性是 SameSite=Lax。换句话说,当 Cookie 没有设置 SameSite 属性时,将会视作 SameSite 属性被设置为Lax 。如果想要指定 Cookies 在同站、跨站请求都被发送,那么需要明确指定 SameSiteNone。具有 SameSite=NoneCookie 也必须标记为安全并通过 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 cookiesCookies without SameSite must be secure 进行测试。