Service-Worker-Allowed header

Der HTTP Service-Worker-Allowed Antwort-Header 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 das Service Worker-Skript befindet. Zum Beispiel, wenn sich das Skript sw.js 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 Netzwerkanforderungen innerhalb seines Scopes ab, daher sollten Sie vermeiden, unnötig breite Scopes zu verwenden.

Header-Typ Antwort-Header
Verbotener Anforderungs-Header Nein

Syntax

http
Service-Worker-Allowed: <scope>

Direktiven

<scope>

Ein String, der eine URL repräsentiert, die den Registrierungsbereich eines Service Workers definiert, das heißt, welchen Umfang der URLs ein Service Worker kontrollieren 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 für alle Ressourcen unter example.com/ gilt.

js
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 nach der Skript-Ressource des Service Workers (./sw.js) enthält den Service-Worker-Allowed-Header gesetzt auf /:

http
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 breiteren Scope als das Verzeichnis, in dem sich das Service Worker-Skript befindet (/product/sw.js), anfordert.

Spezifikationen

Specification
Service Workers
# service-worker-allowed

Browser-Kompatibilität

Siehe auch