7

Próbuję chronić witrynę na wczesnym etapie rozwoju przed przypadkowymi ciekawskimi oczami. Podstawowe uwierzytelnianie za pomocą protokołu HTTPS wydawało się rozsądnym rozwiązaniem, ale obecność obsługującego zdaje się uniemożliwiać działanie w przeglądarce Chrome. Dzieje się tak w szczególności, jeśli serviceworker jest już zainstalowany, ale przeglądarka nie ma aktywnej autoryzacji dla żądanej dziedziny.Konflikt serwisowy z podstawowym uwierzytelnieniem HTTP?

Chrome pokazuje, że odpowiedź była 401 na osi czasu sieciowego

401 in Network timeline

a także pokazuje, że zakładka przeglądarka odbiera odpowiednie nagłówki odpowiedzi:

HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Basic realm="My realm" 
Date: Tue, 21 Jun 2016 03:09:35 GMT 
Connection: close 
Cache-Control: no-cache 

ale nie monit o zalogowanie, pokazuje tylko treść treści odpowiedzi 401.

Czy jest to błąd przeglądarki Chrome, czy też może to być problem z usługą ServiceWorker?

+0

Jak Chrome wiedzieć, aby wysłać nagłówki auth z żądaniem pracownika usługa? –

+0

@RickViscomi servicoperer nie, ale karta powinna, prawda? SW powinien być nieobliczalnym pośrednikiem w tym procesie, to właśnie zakładałem. – Andrew

Odpowiedz

0

Wynika to z fetch() opcji niestety domyślnie na 'omit' mandatów. Musisz fetch() z {'credentials': 'same-origin'}. Uważaj na GitHub pull request.

Na razie, jeśli używasz add() lub addAll(), musisz przekazać obiekt żądania.

Przykład:

cache.addAll(
    cacheUrls.map(url => new Request(url, {credentials: 'same-origin'})) 
);