Safari 12 替换授权标头

Posted

技术标签:

【中文标题】Safari 12 替换授权标头【英文标题】:Safari 12 replaces authorization header 【发布时间】:2019-02-26 14:47:26 【问题描述】:

我们有一个受基本身份验证保护的网络服务器 (nginx) https://www.website.com。 API https://www.website.com/api 没有基本认证!

现在的问题是,从 Safari 12(macOS 和 ios)开始,我们的 javascript 应用程序为 /api 请求设置的带有 Bearer 令牌的 http 标头实际上并没有发送到服务器,因为它被替换为基本令牌。我可以在 Safari 开发人员工具的网络选项卡中看到这一点。如前所述,/api 是公开的,不受保护!

Chrome 例如确实发送了正确的 Bearer 令牌而不是 Basic 令牌。

当我删除 nginx 配置中的基本身份验证并重新启动 safari 时,一切正常,并且 Bearer 令牌被发送到 api。

似乎 safari 12 只是为域的每个请求自动发送基本令牌。

有人知道这是否是 safari 中的错误吗?一种解决方案可能是我们将 api 目标从 /api 更改为单独的子域,例如 api.website.com。

感谢您的帮助。

【问题讨论】:

我们也得到了这个。 @sven-w 你有没有找到解决这个问题的方法?还是您坚持添加子域? 我们现在正在使用自定义 http 标头 'x-auth-token' 你找到解决这个问题的办法了吗? 从那时起,上述解决方案对我们有效。 【参考方案1】:

我可以告诉您,您提出的“api.website.com”解决方案存在同样的问题。 Safari 似乎并不关心子域。它似乎只关心域。

【讨论】:

【参考方案2】:

我可以确认这是 Safari 的问题,我现在找不到解决方案

【讨论】:

以上是关于Safari 12 替换授权标头的主要内容,如果未能解决你的问题,请参考以下文章

PHP websocket不适用于safari,标头修改

iPhone/iPad Safari 是不是需要视频的“Accept-Ranges”标头?

由于浏览器设置的标头,Safari 拒绝重定向 CORS 请求

Safari 和 CORS:自定义响应标头消失

Firefox 和 Safari 不在 Service Worker 请求中发送自定义 http 标头

强制 Safari 在 jQuery GET 请求中包含 Origin 标头