似乎服务工作者内部的 fetch 事件没有接收请求标头,尽管它在 MDN 文档中有所说明:
您可以通过调用 FetchEvent 返回的 Request 对象的参数来检索有关每个请求的大量信息:
event.request.url
event.request.method
event.request.headers
event.request.body
从主线程获取资源的代码:
fetch(`${companyConfig.base}ticket-scanner/config`, {
headers: {
'X-Nsft-Locale' : `en`,
'X-Nsft-Id': `1`,
},
}).then((response) => {
return response.json();
}).then((data) => {...})
在 SW 文件中获取事件处理程序:
self.addEventListener('fetch', function(event) {
event.respondWith(
caches.match(event.request, {cacheName : CACHE_NAME})
.then(function(response) {
if(response) {
return response;
}
console.log(event.request.headers); //Log out headers
return fetch(event.request).then(function(response){
return response;
}).catch(function(err){
console.error(err);
})
})
)
});
记录每个 fetch 事件的标头给我一个空对象:
标头{}
这使我无法缓存仅需要这两个标头的特定请求。不需要凭据。我错过了什么吗?