Context
使用 Safari(IOS 和 MacOS),通过 HTTPS(两者一起)的带有授权标头的 XHR 请求不会到达服务器。但它适用于 IE、Chrome 和 Firefox。
我使用 Letscrypt 生成的有效证书,浏览器不会显示有关它的警告。
在 Safari 的 Web 检查器上,这些 XHR 尝试获取结果,直到超时并且不显示错误。
我有一个域,没有子域。
Test
- 授权标头 + HTTPS => 不起作用
- 授权标头 + 无 HTTPS (HTTP) => 有效
- 无授权标头 + HTTPS => 有效
Code
我使用拦截器来设置授权标头。
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;
}
有人遇到过同样的问题吗?
UPDATE 1
Safari + HTTPS +“授权”标头有问题。
如果我将“Authorization”重命名为“MyHeader”,并在服务器上进行一些修改以使用“MyHeader”令牌检索我的不记名令牌,则一切正常。
在 safari 上使用 HTTPS 时,“Authorization”标头是受保护的字吗?
我在 safari 中也遇到了类似的问题,其中标头中的“授权”未在 GET 请求中发送,但最终结果很简单。
我只是在请求 URL 末尾附加了一个“/”,它对我有用。
例如:将 URL 从“/token”更改为“/token/”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)