Service-Worker-Allowed
Der HTTP Service-Worker-Allowed
Antwort-Header wird verwendet, um die Pfadeinschränkung für den scope
eines Service Workers zu erweitern.
Standardmäßig ist der scope
für eine Registrierung eines Service Workers das Verzeichnis, in dem das Service Worker-Skript liegt. Zum Beispiel, wenn das Skript sw.js
sich in /js/sw.js
befindet, kann es standardmäßig nur URLs unter /js/
kontrollieren. Server können den Service-Worker-Allowed
-Header verwenden, um einem Service Worker zu erlauben, URLs außerhalb seines eigenen Verzeichnisses zu kontrollieren.
Ein Service Worker fängt alle Netzwerk-Anfragen innerhalb seines scope
ab. Daher sollten Sie es vermeiden, zu weit gefasste scopes
zu verwenden, es sei denn, es ist notwendig.
Header-Typ | Antwort-Header |
---|---|
Verbotener Anforderungs-Header | Nein |
Syntax
Service-Worker-Allowed: <scope>
Direktiven
<scope>
-
Ein String, der eine URL repräsentiert, die den Registrierungsscope eines Service Workers definiert, also, welcher Bereich von URLs von einem Service Worker kontrolliert werden kann.
Beispiele
Verwendung von Service-Worker-Allowed zur Erweiterung des Service Worker-Scopes
Das folgende JavaScript-Beispiel ist in example.com/product/index.html
enthalten und versucht, einen Service Worker mit einem scope
zu registrieren, der auf alle Ressourcen unter example.com/
angewendet wird.
navigator.serviceWorker.register("./sw.js", { scope: "/" }).then(
(registration) => {
console.log("Install succeeded, scoped to '/'", registration);
},
(error) => {
console.error(`Service worker registration failed: ${error}`);
},
);
Die HTTP-Antwort auf die Anforderung der Service Worker-Skriptressource (./sw.js
) enthält den Service-Worker-Allowed
-Header, der auf /
gesetzt ist:
HTTP/1.1 200 OK
Date: Mon, 16 Dec 2024 14:37:20 GMT
Service-Worker-Allowed: /
// sw.js contents…
Wenn der Server den Header nicht setzt, schlägt die Registrierung des Service Workers fehl, da die scope
-Option ({ scope: "/" }
) einen scope
anfordert, der breiter ist als das Verzeichnis, in dem sich das Service Worker-Skript befindet (/product/sw.js
).
Spezifikationen
Specification |
---|
Service Workers # service-worker-allowed |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
Service-Worker
-Header- Service Worker API
ServiceWorkerRegistration
- Warum schlägt die Registrierung meines Service Workers fehl in Using Service Workers.