Service-Worker-Allowed header
HTTP Service-Worker-Allowed
响应头用于放宽服务工作线程默认 scope
的路径限制。
默认情况下,服务工作线程注册的 scope
是服务工作线程脚本所在的目录。例如,如果脚本 sw.js
位于 /js/sw.js
中,则默认情况下它只能控制 /js/
下的 URL。服务器可以使用 Service-Worker-Allowed
头来允许服务工作线程控制其自身目录之外的 URL。
服务工作线程会拦截其作用域内的所有网络请求,因此除非必要,否则应避免使用过于宽泛的作用域。
语法
http
Service-Worker-Allowed: <scope>
指令
<scope>
-
一个字符串,表示定义服务工作线程注册作用域的 URL;即服务工作线程可以控制的 URL 范围。
示例
使用 Service-Worker-Allowed 扩大服务工作线程的作用域
下面的 JavaScript 示例包含在 example.com/product/index.html
中,并尝试 注册 一个服务工作线程,其作用域适用于 example.com/
下的所有资源。
js
navigator.serviceWorker.register("./sw.js", { scope: "/" }).then(
(registration) => {
console.log("Install succeeded, scoped to '/'", registration);
},
(error) => {
console.error(`Service worker registration failed: ${error}`);
},
);
对服务工作线程脚本资源请求(./sw.js
)的 HTTP 响应包括设置为 /
的 Service-Worker-Allowed
头。
http
HTTP/1.1 200 OK
Date: Mon, 16 Dec 2024 14:37:20 GMT
Service-Worker-Allowed: /
// sw.js contents…
如果服务器未设置此头,则服务工作线程注册将失败,因为 scope
选项({ scope: "/" }
)请求的作用域比服务工作线程脚本所在的目录(/product/sw.js
)更宽泛。
规范
规范 |
---|
Service Workers # service-worker-allowed |
浏览器兼容性
加载中…