首页 > 解决方案 > Service Worker 范围不匹配

问题描述

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

标签: reactjsservice-worker

解决方案


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


推荐阅读