Safari 似乎放弃了Authorization
遵循同源 301 重定向时的标头。例如这段JS代码:
fetch("/api/endpoint-that-redirects", { headers: new Headers({ "Authorization": "sometoken" })})
会触发一个GET
to /api/endpoint-that-redirects
与Authorization
标头,其响应为301
带位置/api/endpoint
。浏览器会自动遵循此操作,这意味着它会再次进行 GET 操作/api/endpoint
,但这一次without the Authorization
header.
重定向到时这似乎是预期的行为不同的起源,但我不明白如果重定向到同源的另一个 URL,为什么会发生这种情况。
我在 StackOverflow 上看到了很多关于此行为的在线帖子和问题,但我还没有看到任何明确的解决方案,或者至少没有看到关于此行为的解释。也不清楚其他问题 https://stackoverflow.com/q/57974176/458968如果重定向到同一主机。
Chrome (98) 和 Firefox (97) 都遵循重定向并包含Authorization
后续 GET 请求中的标头。
Safari 15.4+(iOS 15.4、macOS 12.3)用户将不再遇到此问题Authorization
drop.
详细信息:实际上解决了这个问题早在 2021 年 10 月就合并到了 WebKit/Safari 代码中 https://github.com/WebKit/WebKit/commit/8cfdff34446111a6798d0cbcff494322fd14dd69但根据评论https://bugs.webkit.org/show_bug.cgi?id=230935#c18 https://bugs.webkit.org/show_bug.cgi?id=230935#c18直到 2022 年 3 月中旬,Safari 15.4 才最终发布。
因此,对于 15.4 之前的 Safari 版本的任何用户(尚未升级到 iOS 15.4 或 macOS 12.3 的用户),此问题将继续发生,但对于当前使用 Safari/iOS/macOS 的用户而言,不会出现此问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)