Https请求授权不通过Safari工作

问题描述 投票:10回答:3

上下文

使用Safari(IOS和MacOS)通过HTTPS(两者一起)使用Authorization标头的XHR请求不会到达服务器。但它适用于IE,Chrome和Firefox。

我使用由Letsencrypt生成的有效证书,浏览器不会显示有关它的警告。

在Safari的Web检查器上,这些XHR尝试获取结果直到超时并且不显示错误。

我有一个域名,没有子域名。

测试

  • 授权标头+ HTTPS =>不起作用
  • 授权标头+无HTTPS(HTTP)=>工作
  • 没有授权标头+ HTTPS =>工作

我使用拦截器来设置授权头。

this.request = (config) => {
    config.headers = config.headers || {};
    var authData = localStorageService.get('authorizationData');
    if (authData && config.url && !config.url.endsWith("/token")) {
        config.headers = {
            "Authorization": 'Bearer ' + authData.access_token
        };
        config.withCredentials = true;
    }
    return config;
}

有谁遇到过同样的问题?

更新1

Safari + HTTPS +“授权”标题有问题。如果我通过“MyHeader”重命名“Authorization”,并在服务器上进行一些修改以使用“MyHeader”令牌检索我的持有者令牌,那么一切都运行良好。

在“safari”中使用HTTPS,“授权”标题是受保护的单词吗?

angularjs https safari asp.net-core
3个回答
22
投票

我也遇到过类似的safari问题,其中标题中的'Authorization'没有在GET请求中发送,但结果却很简单。

我只是在请求URL的末尾添加了一个'/',它对我有用。

例如:将URL从'/ token'更改为'/ token /'。


0
投票

当通过safari进行的HTTP请求被发送到任何url包含像logintoken等的单词... safari自动添加Accept-Encoding标头,brokes al


0
投票

要解决这个问题,您需要访问运行代码的设备并更改阻止跨站点跟踪的Safari设置,这对我来说很好。

© www.soinside.com 2019 - 2024. All rights reserved.