谷歌Chrome浏览器出现Whitelabel Error Page或者不停请求现象的解决:
在浏览器地址栏中输入chrome://flags/ 并打开,将如下选项禁用:
SameSite by default cookies
Enable removing SameSite=None cookies
Cookies without SameSite must be secure
设置为Disabled 重启浏览器即可
哪些人需要关注:
- 网关开发者
- SSO开发者
- 前后端分离开发者
- 所有接口提供方
问题描述:
Chrome浏览器会于2020年2月17日逐步将SameSite-by-default和SameSite=None-requires-Secure行为配置应用至最新稳定版本的Chrome80, 此次Chrome版本更新的摘要如下:
-
Chrome将Cookie的SameSite属性默认值设为Lax
-
Chrome将拒绝非https的SameSite=None的Cookie, 即Set-Cookie: Key=Value 。 补充: 测试环境HTTPS可提交OA流程申请(IT资源申请单B3, 注明要求增加HTTPS访问)
已知的受影响范围:
-
如星河iframe引用的子系统需要重新登录
-
w3.zto.com, 将会出现重定向死循环(Set-Cookie失败)
应对措施:
-
接口提供方确认, 若无需被跨域调用, 则应将Cookie的SameSite属性设置为Lax, 并可忽略下列2、3条方案
-
接口如需被跨域调用, 且接口会Response Set-Cookie, 则需对cookie进行”SameSite=None; Secure”设置(需在2020年2月17日前完成适配), 此调整有以下注意点:
-
防CSRF措施: 表单提交的重要功能需增加Referer做白名单或设置csrf token。
-
由于部分小众客户端尚不支持SameSite=None属性, 接口因根据User-Agent判断是否要设置SameSite=None属性, 简化规则: 判断Chrome80以上, 完整规则: https://www.chromium.org/updates/same-site/incompatible-clients ,
-
[推荐]如接口既需要被第一方又需要被第三方调用, 则接口应判断调用域是否为同域, 若为同域, 则应设SameSite为Lax, 否则进行”SameSite=None; Secure”设置
-
- 接口提供方做调整(Secure)后, 测试环境若受影响, 可提交工单申请测试环境https域名
- 如果用户在登录完成之后才升级了chrome80, 并且登录会话依然在有效期内, 会造成: 同域请求登录正常, 跨域请求无法携带cookie的情况.
预计的处理方式是: cookie中额外写入下发cookie时的chrome版本, 如果cookie中写入的版本与当前请求的版本不符, 就重新依照配置规则写入新的cookie
如何验证:
-
升级Chrome浏览器至80稳定版, 打开 chrome://flags/ 页面, 将 #same-site-by-default-cookies 和 #cookies-without-same-site-must-be-secure 设置为enable
-
打开您所管理的站点, 打开Network, 如下图视图, 如勾选"Only show requests with SameSite issues"后, 有请求出现在列表里, 则意味着存在此问题: