上下文
使用Safari(IOS和MacOS)通过HTTPS(两者一起)使用Authorization标头的XHR请求不会到达服务器。但它适用于IE,Chrome和Firefox。
我使用Letsencrypt生成的有效证书,浏览器不显示有关它的警告。
在Safari的Web检查器上,这些XHR尝试获取结果,直到超时并且没有显示错误。
我有一个域名,没有子域名。
测试
代码
我使用拦截器设置授权标头。
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,“授权”标题是受保护的字吗?
答案 0 :(得分:18)
我还遇到了类似于safari的问题,其中标题中的“授权”未在GET请求中发送,但结果却很简单。
我只是在请求网址的末尾添加了一个'/',它对我有用。
例如:将URL从'/ token'更改为'/ token /'。
答案 1 :(得分:0)
当通过safari发出的HTTP请求发送给任何url时,其中包含诸如login
,token
等之类的单词... safari会自动添加Accept-Encoding
标头,而该标头会损坏
答案 2 :(得分:0)
要解决此问题,您需要访问正在运行代码的设备并更改可防止跨站点跟踪的safari设置,因此对我来说很好。
答案 3 :(得分:0)
在我的情况下,使用Laravel,只是.htaccess删除的斜线。发生重定向时,由于明显的原因,不会转发标头。