Redirect 什么是fetch';s重定向和授权头的预期行为?(Safari的行为与其他Mac浏览器不同)

Redirect 什么是fetch';s重定向和授权头的预期行为?(Safari的行为与其他Mac浏览器不同),redirect,safari,webkit,fetch-api,http-authentication,Redirect,Safari,Webkit,Fetch Api,Http Authentication,简言之,当在fetchapi中使用授权头并执行重定向时,Chrome、FireFox和Opera(在Mac上)会在第二个请求中包含授权头。但是,Safari(12.0.1)没有。根据我的理解,应该包括标题。这是对fetch如何工作的正确理解吗 下面是我在Safari解决方案中使用的简化代码,但我想知道是我做错了什么导致了Safari的行为,还是有更好的解决方案 导出异步函数loadData(令牌){ const opts={headers:{Authorization:`Bearer${toke

简言之,当在fetchapi中使用授权头并执行重定向时,Chrome、FireFox和Opera(在Mac上)会在第二个请求中包含授权头。但是,Safari(12.0.1)没有。根据我的理解,应该包括标题。这是对fetch如何工作的正确理解吗

下面是我在Safari解决方案中使用的简化代码,但我想知道是我做错了什么导致了Safari的行为,还是有更好的解决方案

导出异步函数loadData(令牌){
const opts={headers:{Authorization:`Bearer${token}}},凭证:'include',重定向:'follow'};
let response=wait fetch('/api/data',opts);
//解决Safari在重定向请求中不包含头的问题
if(response.status==401&&response.redirected){
response=等待获取(response.url,opts);
}
if(response.ok){
返回response.json();
}
返回null;
}
快速编辑有关重定向的其他信息。重定向的位置位于同一原点,是一个
302

content-length: 118
content-type: text/plain; charset=utf-8
date: Mon, 26 Nov 2018 20:12:18 GMT
location: /api/data/current-version
server: nginx
status: 302
strict-transport-security: max-age=15768000
vary: Accept

你的理解是正确的。用于重定向的请求对象应该是您创建并向其中添加授权标头的请求对象的副本。因此,如果它不在Safari中,那么这听起来像是Safari/WebKit的bug,您应该花时间在