开发者问题收集

服务工作者范围不匹配

2019-12-17
844

我在公共文件夹中有 service-worker.js
当我注册服务工作者时,我必须说

navigator.serviceWorker.register('./public/csw.js')

但问题是现在服务工作者的范围设置为 http://localhost:2009/public 并且我想捕获 http://localhost:2009/ 的获取请求


如果我尝试更改服务工作者的范围

navigator.serviceWorker.register('./public/csw.js',{scope:'/'})

这会产生错误,因为服务工作者是从其他目录中的文件调用的,即 root/src/index.js
我没有使用 CRA

1个回答

出于安全原因,Service Worker 只能管理 其自身路径下的范围 。如果您希望 csw.js 处理主机上的所有请求,则需要将其移动到根文件夹。或者,您可以在 csw.js 路径上设置 HTTP 标头 Service-Worker-Allowed: / (假设您的主机允许您这样做)

dontcallmedom
2020-01-14