7

저는 캐주얼 한 캐주얼 한 눈부터 개발 초기 단계에서 사이트를 보호하려고합니다. HTTPS를 통한 기본 인증은 합리적인 해결책처럼 보였지만 서비스 전문가가있어 Chrome에서 작동하지 못하는 것 같습니다. 이것은 서비스 요원이 이미 설치되어 있지만 브라우저에 원하는 영역에 대한 활성 권한이없는 경우에 특히 발생합니다.서비스 전문가가 HTTP 기본 인증과 충돌합니까?

크롬는 응답도

401 in Network timeline

그리고 브라우저 탭이 올바른 응답 헤더를 받고 있음을 보여줍니다 네트워크 타임 라인에서 401 것을 보여줍니다

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 

을하지만 그렇지 않습니다 로그인을 요구하면 401 응답의 내용 본문 만 표시됩니다.

이 버그는 Chrome 버그입니까, 아니면 내 ServiceWorker에 문제가 있습니까?

+0

어떻게 크롬이 서비스 작업자 요청과 함께 인증 헤더를 보낼 알고 있나요? –

+0

@RickViscomi 서비스 종사자가 아니지만 탭이 있어야합니까? SW는이 과정에서 미묘한 미들 박스 여야합니다. – Andrew

답변

0

이 때문에 'omit' 자격 증명 불행하게도 기본값 fetch() 옵션이다. fetch(){'credentials': 'same-origin'}이 필요합니다. GitHub pull request을 주시하십시오.

지금은 add() 또는 addAll()을 사용하는 경우 요청 개체를 전달해야합니다.

예 :

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