Service-Worker-Allowed
Der HTTP-Service-Worker-Allowed
-Antwortheader wird verwendet, um die Pfadeinschränkung für den Standard-scope
eines Service-Workers zu erweitern.
Standardmäßig ist der scope
für eine Service-Worker-Registrierung das Verzeichnis, in dem sich das Service-Worker-Skript befindet.
Zum Beispiel kann das Skript sw.js
, das sich in /js/sw.js
befindet, 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 Netzwerkrequests innerhalb seines Geltungsbereichs ab, deshalb sollten Sie es vermeiden, zu weitreichende Bereiche zu benutzen, es sei denn, es ist notwendig.
Header-Typ | Antwortheader |
---|---|
Verbotener Anfrageheader | Nein |
Syntax
Service-Worker-Allowed: <scope>
Direktiven
<scope>
-
Ein String, der eine URL darstellt, die den Registrierungsbereich eines Service-Workers definiert; das heißt, welchen Bereich von URLs ein Service-Worker kontrollieren kann.
Beispiele
Verwendung von Service-Worker-Allowed, um den Geltungsbereich eines Service-Workers zu erweitern
Das folgende JavaScript-Beispiel ist in example.com/product/index.html
enthalten und versucht, einen Service-Worker mit einem Geltungsbereich zu registrieren, der für alle Ressourcen unter example.com/
gilt.
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 Anfrage der Service-Worker-Skript-Ressource (./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 Service-Worker-Registrierung fehl, da die scope
-Option ({ scope: "/" }
) einen breiteren Geltungsbereich anfordert 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 mein Service Worker bei der Registrierung fehl in Using Service Workers.