Cabeçalhos de solicitação não enviados do Service Worker
Estou tentando buscar um serviço da web de um técnico de serviço. Este serviço é um JSP protegido com autenticação básica do Apache, portanto, devo fornecer as credenciais para autenticar nos cabeçalhos da solicitação. A solicitação a seguir funciona muito bem na janela principal:
self.addEventListener('push', function(event) {
console.log('Received a push message', event);
event.waitUntil(
fetch(ONLINE_SITE_ENDPOINT, {
method: 'GET',
mode: 'cors',
headers: {
'Accept': 'application/json',
'Authorization': 'Basic btoa(auth info)'
}
}).then(function(response) {
//process response
}).catch(function(err) {
})
);
});
Esse código está no escopo event.waitUntil (), em uma função chamada de um ouvinte de evento 'push'. No entanto, a mesma chamada exata falha com um 401 (não autorizado). O painel Rede das ferramentas do desenvolvedor mostra que os cabeçalhos não estão sendo enviados:
OPTIONS /latest-new.jsp HTTP/1.1
Host: {an accessible host}
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://localhost
User-Agent: Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134 Safari/537.36
Access-Control-Request-Headers: accept, authorization
Accept: */*
Referer: http://localhost/service-worker.js
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8
Há algo faltando aqui? ou simplesmente não pode ser alcançado por um técnico de serviço?
Algumas informações extras: não é possível usar o XMLHttpRequest, pois é 'Não definido' no escopo do trabalhador do serviço. Os cabeçalhos no JSP antes de recuperar o JSON:
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
ATUALIZAR: definitivamente existe algo com os cabeçalhos de autenticação dos trabalhadores do serviço, pois as solicitações para URLs não protegidos não falham. O mesmo serviço sem autorização do Apache funciona conforme o esperado.