Firefox 和 Safari 不会在 Service Worker 请求中发送自定义 http headers
Firefox & Safari doesn't send custom http headers in Service Worker requests
在 firefox 和 safari 中,自定义 headers 不会在服务工作者内部发送获取请求。但是 chrome 有效。 (我在 Access-Control-Allow-Headers
中添加了自定义 header)
Service Worker 中的代码:
fetch(Request, {
headers: {
'my-custom-header': 'a value'
}
});
我的OPTIONS returns 204,请求模式是'cors'。也是同源请求。
(对于 same-origin 个请求,CORS 不起作用。)
我无法重现您描述的问题; here's a live deployment of a site with a service worker that makes a request to the https://httpbin.org/#/Request_inspection/get_headers 启动时的端点,并记录回响应,表明收到了哪些请求 header:
fetch('https://httpbin.org/headers', {
headers: {'my-custom-header': 'a value'},
})
.then((response) => response.json())
.then((data) => console.log(data.headers));
在 Chrome、Firefox 和 Safari 中,我看到自定义 header 与浏览器默认发送的其他 header 一起返回。
您可以尝试一下,通过重新混合 https://glitch.com/edit/#!/valuable-nonchalant-pet?path=sw.js%3A3%3A81
来测试不同的场景
我发现了我的错误。我传递的是请求对象而不是 URL。所以我应该像下面那样做:
const request = new Request(event.request);
request.headers.append('my-custom-header', 'a value');
return fetch(request);
在 firefox 和 safari 中,自定义 headers 不会在服务工作者内部发送获取请求。但是 chrome 有效。 (我在 Access-Control-Allow-Headers
中添加了自定义 header)
Service Worker 中的代码:
fetch(Request, {
headers: {
'my-custom-header': 'a value'
}
});
我的OPTIONS returns 204,请求模式是'cors'。也是同源请求。
(对于 same-origin 个请求,CORS 不起作用。)
我无法重现您描述的问题; here's a live deployment of a site with a service worker that makes a request to the https://httpbin.org/#/Request_inspection/get_headers 启动时的端点,并记录回响应,表明收到了哪些请求 header:
fetch('https://httpbin.org/headers', {
headers: {'my-custom-header': 'a value'},
})
.then((response) => response.json())
.then((data) => console.log(data.headers));
在 Chrome、Firefox 和 Safari 中,我看到自定义 header 与浏览器默认发送的其他 header 一起返回。
您可以尝试一下,通过重新混合 https://glitch.com/edit/#!/valuable-nonchalant-pet?path=sw.js%3A3%3A81
来测试不同的场景我发现了我的错误。我传递的是请求对象而不是 URL。所以我应该像下面那样做:
const request = new Request(event.request);
request.headers.append('my-custom-header', 'a value');
return fetch(request);