Заголовки запроса не отправлены от Service Worker
Я пытаюсь получить веб-сервис от работника сервиса. Эта служба представляет собой JSP, защищенный базовой аутентификацией Apache, поэтому я должен предоставить учетные данные для аутентификации в заголовках запросов. Следующий запрос прекрасно работает из главного окна:
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) {
})
);
});
Этот код находится в области event.waitUntil (), в функции, вызываемой из прослушивателя события «push». Однако, тот же самый точный вызов терпит неудачу с 401 (Несанкционированный). Панель «Сеть» из инструментов разработчика показывает, что заголовки не отправляются:
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
Здесь чего-то не хватает? или это просто не может быть достигнуто от работника службы?
Некоторая дополнительная информация: просто нельзя использовать XMLHttpRequest, поскольку он не определен в области работника службы. Заголовки в JSP перед извлечением 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");
ОБНОВИТЬ: определенно есть что-то с заголовками аутентификации от сервисных работников, так как запросы на незащищенные URL не сбои. Тот же сервис без авторизации Apache работает как положено.