Eu tenho tentado usar trabalhadores de serviço por (o que parece horas e horas), para anexar um cabeçalho simples a todas as solicitações. O que é frustrante é que funciona.
Tentativa 1:
self.addEventListener("fetch", event => {
const modifiedHeaders = new Headers({
...event.request.headers,
'API-Key': '000000000000000000001'
});
const modifiedRequest = new Request(event.request, {
headers: modifiedHeaders,
});
event.respondWith((async () => {
return fetch(modifiedRequest);
})());
});
O código acima funciona para arquivos HTML, no entanto, para arquivos CSS e JS, recebo o seguinte erro
ReferenceError: headers não está definido
Se eu desativar o requisito do cabeçalho, a página carrega imagens e javascript e posso interagir com ele normalmente.
Tentativa 2:
var req = new Request(event.request.url, {
headers: {
...event.request.headers,
'API-Key': '000000000000000000001'
},
method: event.request.method,
mode: event.request.mode,
credentials: event.request.credentials,
redirect: event.request.redirect,
referrer: event.request.referrer,
referrerPolicy: event.request.referrerPolicy,
bodyUsed: event.request.bodyUsed,
cache: event.request.cache,
destination: event.request.destination,
integrity: event.request.integrity,
isHistoryNavigation: event.request.isHistoryNavigation,
keepalive: event.request.keepalive
});
Nesta tentativa, simplesmente criei uma nova solicitação, que incluiu com êxito o novo cabeçalho nas solicitações de arquivos CSS e JS. No entanto, quando eu faço um POST ou redireciono, as coisas param de funcionar e se comportam de forma estranha.
Qual é a abordagem correta para isso? Sinto que a tentativa 1 é o melhor caminho, mas não consigo criar o objeto Headers na solicitação, não importa o que eu faça.
A versão do chrome que estou usando é
Versão 78.0.3904.70 (versão oficial) (64 bits)
O site é uma ferramenta interna para desenvolvedores, portanto, a compatibilidade entre navegadores não é necessária. Por isso, estou feliz em carregar quaisquer bibliotecas adicionais / ativar recursos experimentais etc.