Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

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

http
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/.

js
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
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