En-tête Service-Worker-Allowed
L'en-tête de réponse HTTP Service-Worker-Allowed est utilisé pour élargir la restriction de chemin pour la portée (scope) par défaut d'un service worker.
Par défaut, le scope pour l'enregistrement d'un service worker est le répertoire où se trouve le script du service worker.
Par exemple, si le script sw.js se trouve dans /js/sw.js, il ne peut contrôler que les URL sous /js/ par défaut.
Les serveurs peuvent utiliser l'en-tête Service-Worker-Allowed pour permettre à un service worker de contrôler les URL en dehors de son propre répertoire.
Un service worker intercepte toutes les requêtes réseau dans sa portée, il est donc conseillé d'éviter d'utiliser des portées trop larges sauf si nécessaire.
| Type d'en-tête | En-tête de réponse |
|---|
Syntaxe
Service-Worker-Allowed: <scope>
Directives
<scope>-
Une chaîne de caractères représentant une URL qui définit la portée d'enregistrement d'un service worker ; c'est-à-dire la plage d'URL qu'un service worker peut contrôler.
Exemples
>Utiliser Service-Worker-Allowed pour élargir la portée d'un service worker
L'exemple JavaScript ci-dessous est inclus dans example.com/product/index.html et tente d'enregistrer un service worker avec une portée qui s'applique à toutes les ressources sous example.com/.
navigator.serviceWorker.register("./sw.js", { scope: "/" }).then(
(registration) => {
console.log("Installation réussie, portée définie sur '/'", registration);
},
(error) => {
console.error(
`L'enregistrement du <i lang="en">service worker</i> a échoué : ${error}`,
);
},
);
La réponse HTTP à la requête de ressource du script du service worker (./sw.js) inclut l'en-tête Service-Worker-Allowed défini sur / :
HTTP/1.1 200 OK
Date: Mon, 16 Dec 2024 14:37:20 GMT
Service-Worker-Allowed: /
// contenu de sw.js…
Si le serveur ne définit pas l'en-tête, l'enregistrement du service worker échoue, car l'option scope ({ scope: "/" }) demande une portée plus large que le répertoire où se trouve le script du service worker (/product/sw.js).
Spécifications
| Spécification |
|---|
| Service Workers Nightly> # service-worker-allowed> |
Compatibilité des navigateurs
Voir aussi
- L'en-tête
Service-Worker - L'API Service worker
- L'interface API
ServiceWorkerRegistration - Pourquoi est-ce que l'enregistrement de mon service worker échoue ? dans Utiliser les services workers.