我想知道我是否能够安装一个范围与页面不同(它想要服务)但与它所代理的资源范围相同的服务工作者。
我对此设置感兴趣,因为我希望我的服务人员控制下面的 URL/resources/并且不干扰其他 URL。在我无法控制的根目录中注册了另一个服务人员。
这是我的示例的结构:
/page/index.html
/resources/sw.js
/resources/a
/resources/b
/resources/c
中的页面/page/index.html将 service-worker 注册为
if ('serviceWorker' in navigator) {
window.addEventListener('load', () => {
navigator.serviceWorker.register('/resources/sw.js', {scope: '/resources/'})
.then((reg) => {
console.log('service-worker registration success: scope=' + reg.scope);
}).catch((error) => {
console.log('service-worker registration failure: error=' + error);
});
});
}
当页面从/resources/路径中获取 url 时,我希望我的服务人员拦截这些 url。不幸的是,设置不起作用。/page/index.html不受服务人员控制。
我知道,如果我将工作人员的范围(使用 Service-Worker-Allowed 或移动文件)更改为,/page/我将能够控制所有获取,/page/index.html但正如我所说,除了我不控制任何其他路径/resources/
最后有没有一种解决方案可以在不干扰根服务人员的情况下实现我想要的东西?