Https请求授权不通过Safari工作

Nic*_*une 14 safari https angularjs asp.net-core

上下文

使用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;
}
Run Code Online (Sandbox Code Playgroud)

有谁遇到过同样的问题?

更新1

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

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

nil*_*jha 25

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

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

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

  • 似乎 iOS 不会在重定向时发送请求标头 (4认同)