Feature-Policy

Experimental: Cette fonction est expérimentale
Puisque cette fonction est toujours en développement dans certains navigateurs, veuillez consulter le tableau de compatibilité pour les préfixes à utiliser selon les navigateurs.
Il convient de noter qu'une fonctionnalité expérimentale peut voir sa syntaxe ou son comportement modifié dans le futur en fonction des évolutions de la spécification.

Attention : Cet en-tête a maintenant été renommé Permissions-Policy dans la spécification, et cet article sera mis à jour pour refléter ce changement.

L'en-tête HTTP Feature-Policy fournit un mécanisme pour permettre ou interdire l'utilisation de fonctionnalités du navigateur pour le document courant et le contenu que ce dernier embarquerait via des éléments <iframe>.

Pour plus d'informations, voir l'article principal sur les règles de gestion des fonctionnalités (Feature Policy).

Syntaxe

Feature-Policy: <directive> <allowlist>
<directive>

La directive de fonctionnalité à laquelle s'applique la liste d'autorisation allowlist. Voir la section Directives ci-après pour les noms de directive autorisés.

<allowlist>

Une liste d'autorisation contenant des origines, décrites par une ou plusieurs des valeurs suivantes, et séparées par des espaces :

  • * : La fonctionnalité est autorisée pour ce document ainsi que l'ensemble des contextes de navigation imbriqués (via les éléments <iframe>) quelles que soient leurs origines.
  • 'self' : La fonctionnalité sera autorisée dans ce document et pour tous les contextes de navigation imbriqués de la même origine. La fonctionnalité n'est pas autorisée pour les contextes de navigation d'autres origines.
  • 'src' : Pour l'attribut allow d'une iframe uniquement. La fonctionnalité sera autorisée pour cette iframe uniquement si le document qui y est chargé provient de la même origine que celle indiquée par l'attribut src de l'élément HTML.

    Note : L'origine 'src' est uniquement utilisée pour la liste allow d'une iframe. Pour ces éléments, il s'agit de la valeur par défaut pour allowlist.

  • 'none' : La fonctionnalité est désactivée pour le document (niveau le plus haut) et les contextes de navigation imbriqués.
  • <origin(s)> : La fonctionnalité est autorisée pour des origines distinctes (par exemple, https://example.com). Lorsqu'on indique plusieurs origines, celles-ci doivent être séparées par un espace.

Les valeurs * (autorisation pour toutes les origines) ou 'none' (désactivation pour toutes les origines) peuvent être utilisées seules. 'self' et 'src' peuvent, quant à elles, être utilisées avec une ou plusieurs origines.

Chaque fonctionnalité en question possède une liste d'autorisation par défaut qui est : *, 'self', ou 'none'.

Directives

accelerometer

Contrôle si le document courant est autorisé à recueillir des informations à propos de l'accélération de l'appareil au moyen de l'interface Accelerometer (en-US).

ambient-light-sensor (en-US)

Contrôle si le document courant est autorisé à recueillir des informations à propos de la luminosité ambiante de l'appareil au moyen de l'interface AmbientLightSensor (en-US).

autoplay (en-US)

Contrôle si le document courant est autorisé à jouer automatiquement des médias chargés au moyen de l'interface HTMLMediaElement. Quand cette fonctionnalité est désactivée et qu'il n'y a pas eu d'action de la part de l'utilisatrice ou l'utilisateur, la promesse (Promise) retournée par HTMLMediaElement.play() sera rejetée avec une exception DOMException. L'attribut autoplay sur les éléments <audio> et <video> sera ignoré.

battery (en-US)

Contrôle si l'utilisation de l'API Battery Status est autorisé. Quand cette fonctionnalité est désactivée, la promesse retournée par Navigator.getBattery() sera rejetée avec une exception DOMException NotAllowedError.

camera (en-US)

Contrôle si le document courant est autorisé à utiliser l'appareil photographique du système. Quand cette fonctionnalité est désactivée, la promesse retournée par getUserMedia() sera rejetée avec une exception DOMException NotAllowedError.

display-capture (en-US)

Contrôle si le document courant est autorisé ou non à utiliser la méthode getDisplayMedia() (en-US) pour effectuer une capture d'écran. Quand cette fonctionnalité est désactivée, la promesse retounrée par getDisplayMedia() sera rejetée avec une exception NotAllowedError si la permission de prendre une capture d'écran n'est pas obtenue.

document-domain (en-US)

Contrôle si le document courant est autorisé à définir la propriété document.domain. Quand cette directive est désactivée, tenter de modifier document.domain échouera et lèvera une exception DOMException SecurityError.

encrypted-media (en-US)

Contrôle si le document courant est autorisé à utiliser l'API Encrypted Media Extensions (en-US) (EME). Quand cette directive est désactivée, la promesse retournée par Navigator.requestMediaKeySystemAccess() (en-US) sera rejetée avec une exception DOMException.

execution-while-not-rendered

Contrôle si les tâches des cadres doivent être exécutées s'ils ne seront pas rendus à l'écran (par exemple si un élément <iframe> est masqué via l'attribut hidden ou display: none).

execution-while-out-of-viewport

Contrôle si les tâches des cadres doivent être exécutées quand ils sont en dehors de la zone d'affichage.

fullscreen (en-US)

Contrôle si le document courant est autorisé à utiliser Element.requestFullScreen(). Quand cette directive est désactivée, la promesse retournée sera rejetée avec une exception TypeError.

gamepad (en-US)

Contrôle si le document courant peut utiliser l'API Gamepad. Lorsque cette fonctionnalité n'est pas autorisée, Navigator.getGamepads() lèvera une exception (DOMException) SecurityError, et les évènements gamepadconnected et gamepaddisconnected ne seront pas déclenchés.

geolocation (en-US)

Contrôle si le document courant est autorisé à utiliser l'interface Geolocation. Quand cette directive est désactivée, les appels à getCurrentPosition() et watchPosition() causeront un appel de leurs fonctions de rappel avec une exception PositionError (en-US) dont le code est PERMISSION_DENIED.

gyroscope (en-US)

Contrôle si le document courant est autorisé à recueillir des informations à propos de l'orientation de l'appareil au moyen de l'interface Gyroscope (en-US).

layout-animations (en-US)

Contrôle si le document courant est autorisé à afficher des animations de mise en page.

legacy-image-formats (en-US)

Contrôle si le document courant est autorisé à afficher des images dans des formats historiques.

magnetometer (en-US)

Contrôle si le document courant est autorisé à recueillir des informations à propos de l'orientation au moyen de l'interface Magnetometer (en-US).

microphone (en-US)

Contrôle si le document courant est autorisé à utiliser le microphone de l'appareil. Quand cette fonctionnalité est désactivée, la promesse retournée par MediaDevices.getUserMedia() sera rejetée avec une exception NotAllowedError.

midi (en-US)

Contrôle si le document courant est autorisé à utiliser l'API Web MIDI (en-US). Quand cette fonctionnalité est désactivée, la promesse retournée par Navigator.requestMIDIAccess() (en-US) sera rejetée avec une exception DOMException.

Contrôle la disponibilité des mécanismes qui permettent à la page de prendre le contrôle sur le comportement de la navigation spatiale, ou de l'annuler complètement.

oversized-images (en-US)

Contrôle si le document courant est autorisé à télécharger et afficher des images lourdes.

payment (en-US)

Contrôle si le document courant est autorisé à utiliser l'API Payment Request. Quand cette directive est désactivée, le constructeur PaymentRequest() (en-US) lèvera une exception DOMException SecurityError.

picture-in-picture (en-US)

Contrôle si le document courant peut jouer une vidéo avec l'incrustation vidéo avec l'API correspondante.

publickey-credentials-get (en-US)

Contrôle si le document courant est autorisé à utiliser l'API Web Authentication (en-US) afin de récupérer des informations d'authentification avec clé publique (par exemple avec navigator.credentials.get({publicKey: ..., ...})) déjà enregistrées.

speaker-selection (en-US)

Contrôle si le document courant est autorisé à utiliser l'API Audio Output Devices afin d'énumérer et de sélectionner les haut-parleurs.

sync-xhr (en-US)

Contrôle si le document courant est autorisé à réaliser des requêtes XMLHttpRequest.

unoptimized-images (en-US) Expérimental Non-standard

Contrôle si le document courant est autorisé à télécharger et à afficher des images qui ne sont pas optimisées.

unsized-media (en-US) Expérimental Non-standard

Contrôle si le document courant est autorisé à modifier la taille des éléments média après que la disposition initiale a été terminée.

usb (en-US)

Contrôle si le document courant est autorisé à utiliser l'API WebUSB.

screen-wake-lock (en-US)

Contrôle si le document courant est autorisé à utiliser l'API Screen Wake Lock (en-US) pour indiquer que l'appareil ne devrait pas assombrir ou éteindre l'écran.

web-share (en-US)

Contrôle si le document courant est autorisé à utiliser la méthode Navigator.share() de l'API Web Share (en-US) pour partager du texte, des liens, des images et d'autres contenus vers des cibles arbitraires, par exemple à des applications mobiles.

xr-spatial-tracking (en-US)

Contrôle si le document courant est autorisé à utiliser l'API WebXR Device pour interagir avec une session WebXR.

Exemple

SecureCorp Inc. souhaite désactiver les API du microphone et de géolocalisation dans son application. Elle peut le faire en délivrant l'en-tête de réponse HTTP suivant pour définir une règle de gestion des fonctionnalités :

Feature-Policy: microphone 'none'; geolocation 'none'

En spécifiant la valeur 'none' pour liste des origines, les fonctionnalités auxquelles la valeur est appliquée seront désactivées pour tous les contextes de navigation (incluant tous les cadres <iframe>), quelle que soit leur origine.

Spécifications

Specification
Permissions Policy
# permissions-policy-http-header-field

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi