Serviceworker 与 HTTP 基本身份验证冲突?
Serviceworker conflict with HTTP basic auth?
我正试图在开发的早期阶段保护网站免受随意窥探。基于 HTTPS 的基本身份验证似乎是一个合理的解决方案,但 serviceworker 的存在似乎阻止它在 Chrome 中工作。如果已经安装了 serviceworker,但浏览器没有所需领域的活动授权,就会发生这种情况。
Chrome 显示响应是网络时间轴中的 401
并且还显示浏览器选项卡正在接收正确的响应headers:
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响应的内容body。
这是 Chrome 错误,还是我的 ServiceWorker 有问题?
我将此演示给负责在 Chrome 中实现 ServiceWorker 的 Google 工程师之一,他确定这是一个 Chromium 错误。归档于此:
https://bugs.chromium.org/p/chromium/issues/detail?id=623464#
这是因为 fetch()
选项不幸默认为 'omit'
凭据。您需要 fetch()
和 {'credentials': 'same-origin'}
。注意 GitHub pull request.
目前,如果您使用 add()
或 addAll()
,您将需要传递一个请求对象。
示例:
cache.addAll(
cacheUrls.map(url => new Request(url, {credentials: 'same-origin'}))
);
我正试图在开发的早期阶段保护网站免受随意窥探。基于 HTTPS 的基本身份验证似乎是一个合理的解决方案,但 serviceworker 的存在似乎阻止它在 Chrome 中工作。如果已经安装了 serviceworker,但浏览器没有所需领域的活动授权,就会发生这种情况。
Chrome 显示响应是网络时间轴中的 401
并且还显示浏览器选项卡正在接收正确的响应headers:
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响应的内容body。
这是 Chrome 错误,还是我的 ServiceWorker 有问题?
我将此演示给负责在 Chrome 中实现 ServiceWorker 的 Google 工程师之一,他确定这是一个 Chromium 错误。归档于此:
https://bugs.chromium.org/p/chromium/issues/detail?id=623464#
这是因为 fetch()
选项不幸默认为 'omit'
凭据。您需要 fetch()
和 {'credentials': 'same-origin'}
。注意 GitHub pull request.
目前,如果您使用 add()
或 addAll()
,您将需要传递一个请求对象。
示例:
cache.addAll(
cacheUrls.map(url => new Request(url, {credentials: 'same-origin'}))
);