HTTP Service-Worker-Allowed Header

Der HTTP-Header Service-Worker-Allowed ist ein Response-Header, der beim Ausliefern von Service Worker Scripts verwendet wird. Er erweitert den zulässigen Scope über das Script-Verzeichnis hinaus und ermöglicht Worker-Registrierung für übergeordnete Pfade.

Typ

Response-Header

Syntax

Der Header definiert den maximal zulässigen Scope-Pfad.

http
Service-Worker-Allowed: /
Service-Worker-Allowed: /app/

Direktiven

Die Direktiven definieren den erweiterten Scope-Pfad für Service Worker.

path
Absoluter Pfad ab Wurzel der Origin, der den maximalen Scope definiert. Service Worker kann alle Pfade kontrollieren, die mit diesem Pfad beginnen.
/
Erlaubt Worker-Kontrolle über die gesamte Origin, häufigste Konfiguration für globale PWAs.

Beispiele

Nachfolgend finden Sie praktische Anwendungsbeispiele für den Service-Worker-Allowed-Header.

Beispiel 1 Worker im Unterverzeichnis für Root-Scope

http
GET /assets/sw.js HTTP/1.1
Host: app.example.com

HTTP/1.1 200 OK
Content-Type: application/javascript
Service-Worker-Allowed: /
Cache-Control: no-cache

self.addEventListener('fetch', event => {...});

Service Worker Script in /assets/sw.js darf gesamte Origin kontrollieren statt nur /assets/.

Beispiel 2 Eingeschraenkter Scope fuer Subsystem

http
GET /admin/sw.js HTTP/1.1
Host: app.example.com

HTTP/1.1 200 OK
Content-Type: application/javascript
Service-Worker-Allowed: /admin/
Cache-Control: no-cache

self.addEventListener('install', event => {...});

Admin-Bereich Service Worker darf nur /admin/* kontrollieren, nicht die gesamte Anwendung.

Beispiel 3 Ohne Header Standard-Scope

http
GET /app/core/sw.js HTTP/1.1
Host: example.com

HTTP/1.1 200 OK
Content-Type: application/javascript
Cache-Control: no-cache

// Scope default: /app/core/
self.addEventListener('fetch', event => {...});

Ohne Service-Worker-Allowed Header gilt Standard-Scope /app/core/ basierend auf Script-Verzeichnis.

Vorteile für die Systemarchitektur

  • Flexible Deployment-Struktur: Service Worker Scripts können in Asset-Verzeichnissen liegen, aber gesamte App kontrollieren
  • Security Boundaries: Explizite Scope-Definition verhindert unbeabsichtigte Worker-Kontrolle über fremde Bereiche
  • Multi-Tenant PWAs: Verschiedene Worker für unterschiedliche App-Bereiche mit präziser Scope-Trennung

Spezifikation

W3C Service Workers Specification, Section 6.2 https://www.w3.org/TR/service-workers/#service-worker-allowed

Weitere Spezifikationen

Service-Worker Header, Service-Worker-Navigation-Preload