Neo Anderson's Blog

Chrome 跨域限制登录问题的排查解决方案

字数统计: 497阅读时长: 1 min
2022/01/07 157

现象:

  • 一些集成了三方sso登录鉴权系统, 需要反向写入自有域名cookie. 但是发现无法写入.

原因分析:

  • chrome 一般会为cookie信息设置 SameSite属性,用来防止 CSRF 攻击和用户追踪。谷歌默认SameSite属性的为Lax。

解决方案

解决方法A - 适用于 80 -90 版本

如果是 80 及以上版本, 修改浏览器默认安全策略为 Disabled 状态, 然后重启浏览器, 重试登录即可

1, Chorme 浏览器检查版本号, 80 版本后修改了跨域安全问题, 通过 Chrome 菜单, 选择”关于 Google Chorme”, 检查版本号是否大于或等于 80

2,地址栏输入:chrome://flags/#same-site-by-default-cookies

3、地址栏输入:chrome://flags/#cookies-without-same-site-must-be-secure

4、 部分同学可能设置了严格的安全模式,需要调整cookie限制等级
Chrome → 设置 → 隐私设置和安全性 →设置等级为 (允许所有cookie or 在无痕模式下阻止第三方cookie)

5、重启浏览器。

解决方案B - 适用于91 - 94 版本

Mac:Mac系统下可以通过命令行携带参数打开浏览器的方式来解决,前提须关闭所有浏览器窗口并退出浏览器后再进行操作。

1
2
开启Chrome命令:open -a "Google Chrome" --args --disable-features=SameSiteByDefaultCookies
开启Chromium版Edge浏览器命令:open -a "Microsoft Edge" --args --disable-features=SameSiteByDefaultCookies
解决方案C - 适用于94及以上版本的Chrome浏览器

Chromium项目官网 提到在94版本通过命令行禁用设置SameSite默认值的方式会被移除,到时方案1和方案2的方式都将无法使用,后续可通过nginx等代理工具或软件将跨域请求转为非跨域请求来解决改问题。

或者基于实验属性进行尝试
1、地址栏输入:chrome://flags/ ,并在当前页面搜索: Block insecure private network requests. , 并且设置为disabled

CATALOG
  1. 1. 现象:
  2. 2. 原因分析:
  3. 3. 解决方案