问答1 问答5 问答50 问答500 问答1000
网友互助专业问答平台

随手给 Safari 提了一个Bug,让我意外收获了这些新知识

提问网友 发布时间:2025-01-09 08:30
声明:本网页内容为用户发布,旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:1656858193@qq.com
1个回答
热心网友 回答时间:2025-01-15 17:47
项目在进行 JWT 改造后,用户反馈在 Safari 浏览器中出现 Bug,即打开特定页面会自动跳转至登录页面,但打开其他页面则正常。通过对用户操作路径的模拟,成功复现了该问题。经分析,发现是由于接口返回的 301 重定向状态码导致。在重定向过程中,Safari 浏览器没有携带自定义的Authorization 请求头,进而导致接口鉴权失败,返回 401(Unauthorized)状态。这一发现揭示了 Safari 在处理 301 重定向时的特殊行为,即自动发起请求但不携带某些请求头,而 Chrome 浏览器则能正常处理。通过 Charles 和 Proxyman 等工具的辅助,尝试修改响应码以验证不同浏览器的处理逻辑,但最终未能解决 Safari 的问题。

经过多次尝试和搜索,发现并非各浏览器在处理 301 响应码时存在差异,而是 Safari 在重定向时未正确处理某些请求头,导致鉴权失败。为了进一步验证和解决这一问题,作者向 webkit 团队提交了一个 Bug,并提供了复现的代码示例。经过一段时间的等待,官方确认已在新版本中修复了该问题,并提供了测试用的 Demo。作者通过 Koa 处理请求时,发现了 Node.js http 模块在处理 header 字段时将所有 key 转换为小写的问题,这在一定程度上解释了 Safari 的异常行为。为解决这一问题,Node.js 提供了新的 API `req.rawHeaders` 以获取原始数据,使得在处理重定向时能够保持原始请求头的大小写。

文章中还提到了通过将 token 存储在 cookie 中作为解决方案,但这种方法依赖于后端的配合,且可能导致对 JWT 方案的放弃。此外,作者尝试使用 Fetch API 的 `redirect` 属性进行手动处理,但发现其并非预期的“手动处理”而是浏览器的自动处理逻辑。在探索过程中,XMLHttpRequest 作为替代方案被发现能够获取到重定向的 URL,且具备终止重定向请求的能力。最终,作者提出了一种结合 cookie 和 XMLHttpRequest 的 Hack 思路,虽然在 Safari 中可完美运行,但在控制台会打印出 401 错误,但对 JS 运行逻辑无影响。

整个过程中,作者意外地收获了多个新知识,包括不同浏览器在处理 301 重定向时的差异、Node.js http 模块处理 header 字段的方式、以及如何利用现有工具和 API 来解决特定问题。虽然没有采用上述任何一个方案作为最终解决方案,但文章提供了一个全面的分析和探索过程,展示了面对技术难题时的思考和实践方法。

本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。

哪个银行白金卡好办 哪家银行白金卡好办理 什么行白金卡好办 苹果手机迅雷如何使用iPhone迅雷安装捷径使用教程 果友们,给推荐一套iphone5s必备实用软件吧! 抽油烟机能装几个风机 厨房油烟机怎么装风机 油烟机上装管道风机吗 油烟机加装两台风机 油烟机管道加装风机 油烟机上面装什么风机 抽油烟机商用加装风机 承租人的优先购买权,有哪些限制? 什么情况下承租人可以行使优先购买权 优先购买权的法律规定有哪些? 股东优先购买权的行使策略 什么是价值低估理论 价值低估理论价值低估理论的若干方面 人物影响100:军事政治篇内容简介 谁能找到[拿破仑一世书信集],我要下一份 光驱中放入光盘提示360安全浏览器崩溃 又出bug 了?Safari 下文字和省略号重叠问题 三宽教育家长如何经营亲子关系 日常生活中如何与孩子增强亲密关系? 重庆师范大学教务系统密码忘了怎么办 重庆师范大学怎么进去 陈久奎任职经历 重庆师范大学,经济学专业能够转金融数学专业吗 手上长癣有什么症状? 手癣的症状表现 拔剑就是真理几个女主 为什么用约德尔人骂人是什么意思 丙硫咪唑的注意事项 兽用丙硫咪唑用法用量? 丙硫咪唑片的服用方法 手机微信打过来,微信不想,但是手机上显示? 双肩包什么牌子质量 海尔空调线上线下有什么区别 海尔空调最便宜的多少钱 买空调上什么网
Top