Chrome浏览器版本升级带来的跨域访问问题

简介: 本文主要讲Chrome浏览器版本升级带来的跨域访问问题



1、背景


最近在公司研发群,发现有人反馈内部网站跨域访问莫明的出现站点重定向问题,并且都是谷歌80 版本之后出现。


准确的说是78版本之后,并且可能存在同一版本不同人的浏览器表现不同,作者本人也升级了谷歌版本为最新,没有发现这个问题。换句话说这TM就是一桩冤案。作为一个苦逼的研发,冤案不是第一次 见,还是要解决的。


2、探索


重定向的原因无非就是没有cookie,导致没有登录态。沿着这个思路我们展开了一系列的探索。


2.1 探索1,谷歌设置,允许第三方Cookie


结果:失败,没有解决问题


2.2 探索2,浏览器改变SameSite设置


  • 谷歌浏览器地址栏输入:chrome://flags/
  • 找到:SameSite by default cookies、Cookies without SameSite must be secure
  • 设置上面这两项设置成 Disable

结果:成功解决,但是,这个方案有点局限,如果所有人都遇到这个问题,你还需要给每一个人都去说一遍,你需要打开chrome://flags/ ,设置SameSite,天,太麻烦了。出口堵住太麻烦了,当然这也是一种临时方案,所以我们还是要像一个简单点的方案,就是从来源去解决。


2.3 探索3,set-cookie改变SameSite设置


网站跨域访问莫明的出现站点重定向,源头在哪,就是在统一登录的地方,如果我们在统一登录的地方设置了SameSite,哪是不是就在所有用到当前登录态的地方就解决了这个问题。怎么操作了。 操作很简单,其实就是在报文里面set-cookie,添加SameSite=None; Secure

结果:完美解决,一劳永逸。不要给所有人解释你需要怎么怎么做了。


3、原因


最后我回过来思考一下为什么会出现这样的原因了。大家发现在探索的过程中,基本都是改变了SameSite的设置,才成功解决的。 Cookie 的SameSite属性用来限制第三方 Cookie,从而减少安全风险。它可以设置三个值:


  • Strict

Strict最为严格,完全禁止第三方 Cookie,跨站点时,任何情况下都不会发送 Cookie。换言之,只有当前网页的 URL 与请求目标一致,才会带上 Cookie。

Set-Cookie: CookieName=CookieValue; SameSite=Strict;


这个规则过于严格,可能造成非常不好的用户体验。比如,当前网页有一个 GitHub 链

接,用户点击跳转就不会带有 GitHub 的 Cookie,跳转过去总是未登陆状态。


  • Lax

Lax规则稍稍放宽,大多数情况也是不发送第三方 Cookie,但是导航到目标网址的 Get 请求除外。

Set-Cookie: CookieName=CookieValue; SameSite=Lax;


设置了Strict或Lax以后,基本就杜绝了 CSRF 攻击。当然,前提是用户浏览器支持 SameSite 属性。


  • None

网站可以选择显式关闭SameSite属性,将其设为None。不过,前提是必须同时设置Secure属性(Cookie 只能通过 HTTPS 协议发送),否则无效。


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


chrome升级到80版本之后(准确的说是78版本之后),cookie的SameSite属性默认值由None变为Lax,这个才是本次事件的根本原因。


这个问题在社区也是有讨论的,讨论地址:github.com/google/goog…

目录
相关文章
|
30天前
|
Web App开发 人工智能 JSON
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
AutoMouser是一款Chrome扩展程序,能够实时跟踪用户交互行为,并基于OpenAI的GPT模型自动生成Selenium测试代码,简化自动化测试流程。
139 17
AutoMouser:AI Chrome扩展程序,实时跟踪用户的浏览器操作,自动生成自动化操作脚本
|
1月前
|
Web App开发 编解码 vr&ar
使用Web浏览器访问UE应用的最佳实践
在3D/XR应用开发中,尤其是基于UE(虚幻引擎)开发的高精度场景,传统终端因硬件局限难以流畅运行高帧率、复杂效果的三维应用。实时云渲染技术,将渲染任务转移至云端服务器,降低终端硬件要求,确保用户获得流畅体验。具备弹性扩展、优化传输协议、跨平台支持和安全性等优势,适用于多种终端和场景,特别集成像素流送技术,帮助UE开发者实现低代码上云操作,简化部署流程,保留UE引擎的强大开发能力,确保画面精美且终端轻量化。
使用Web浏览器访问UE应用的最佳实践
|
1月前
|
Web App开发 安全 前端开发
一个接口4个步骤轻松搞定最新版Chrome、Edge、Firefox浏览器集成ActiveX控件
目前的浏览器市场,谷歌浏览器占据了半壁江山,因此,谷歌也是最有话语权的,2015年开始取消支持 NPAPI 插件,2022 年10月停止支持 PPAPI 插件;而曾经老大哥IE浏览器也已停止服务,退出历史舞台,导致大量曾经安全、便捷的ActiveX控件无法使用。为了解决这个难题,本人特研发出allWebPlugin中间件,重新让所有ActiveX控件能在谷歌、火狐等浏览器使用。
|
1月前
|
Web App开发 数据采集 JavaScript
Chrome浏览器实例的TypeScript自动化脚本
Chrome浏览器实例的TypeScript自动化脚本
|
3月前
|
Web App开发 API Windows
取接口访问者信息[IP,浏览器,操作系统]免费API接口教程
此API用于获取访问者的IP地址、浏览器和操作系统信息,支持70多种浏览器和操作系统。通过POST或GET请求至`https://cn.apihz.cn/api/ip/getapi.php`,需提供用户ID和KEY。返回结果包括状态码、消息、IP、浏览器和操作系统信息。示例:{"code":200,"ip":"175.154.88.178","browser":"Chrome","os":"Windows 10"}。详情见官网文档。
|
3月前
|
Web App开发 缓存 安全
WIN11 Chrome 双击打不开闪退及Chrome浏览器不能拖拽文件crx
【11月更文挑战第6天】本文介绍了 WIN11 系统中 Chrome 浏览器双击打不开闪退及不能拖拽文件 crx 的原因和解决方法。包括浏览器版本过旧、扩展程序冲突、硬件加速问题、缓存过多、安全软件冲突、系统文件损坏、用户配置文件损坏等问题的解决方案,以及 crx 文件的屏蔽、权限问题和文件格式问题的处理方法。
366 2
|
3月前
|
Web App开发 Linux iOS开发
Chrome浏览器如何导出所有书签并导入书签
【11月更文挑战第4天】本文介绍了如何在 Chrome 浏览器中导出和导入书签。导出时,打开书签管理器,点击“整理”按钮选择“导出书签”,保存为 HTML 文件。导入时,同样打开书签管理器,点击“整理”按钮选择“导入书签”,选择之前导出的 HTML 文件即可。其他主流浏览器也支持导入这种格式的书签文件。
2416 2
|
3月前
|
Web App开发 JavaScript 前端开发
使用 Chrome 浏览器的内存分析工具来检测 JavaScript 中的内存泄漏
【10月更文挑战第25天】利用 Chrome 浏览器的内存分析工具,可以较为准确地检测 JavaScript 中的内存泄漏问题,并帮助我们找出潜在的泄漏点,以便采取相应的解决措施。
518 9
|
4月前
|
Web App开发 开发者
|
4月前
|
Web App开发 JSON 安全
Chrome浏览器的跨域问题
【10月更文挑战第6天】

热门文章

最新文章