7

Ich versuche, eine Website in einem frühen Stadium der Entwicklung vor neugierigen neugierigen Augen zu schützen. Basic Auth über HTTPS schien eine vernünftige Lösung zu sein, aber die Anwesenheit eines Servicearbeiters scheint zu verhindern, dass es in Chrome funktioniert. Dies geschieht insbesondere dann, wenn ein Serviceworker bereits installiert ist, der Browser jedoch keine aktive Berechtigung für den gewünschten Bereich besitzt.Serviceworkerkonflikt mit HTTP-Basisauthentifizierung?

Chrome zeigt, dass die Antwort eine 401 im Netz Timeline

401 in Network timeline

Und zeigt auch, war, dass der Browser-Tab, die richtigen Antwort-Header empfängt:

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 

Aber es funktioniert nicht Aufforderung für eine Anmeldung, zeigt es nur den Inhalt der 401 Antwort.

Ist das ein Chrome-Bug, oder ist es wahrscheinlich ein Problem mit meinem ServiceWorker?

+0

Wie Chrome wissen Auth-Header mit dem Servicemitarbeiter Anfrage zu schicken? –

+0

@RickViscomi der Servicearbeiter nicht, aber die Registerkarte sollte, oder? Die SW sollte in diesem Prozess eine gefühllose Middlebox sein, das habe ich angenommen. – Andrew

Antwort

0

Dies ist wegen einer fetch() Option leider standardmäßig 'omit' Anmeldeinformationen. Sie müssen fetch() mit {'credentials': 'same-origin'}. Achten Sie auf die GitHub pull request. Wenn Sie add() oder addAll() verwenden, müssen Sie ein Anforderungsobjekt übergeben.

Beispiel:

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