Feature-Policy

L'en-tête HTTP Feature-Policy est un mécanisme permettant de permettre ou d'interdire l'utilisation de fonctionnalités du navigateur dans son propre cadre et dans ceux de tous les éléments <iframe> que le document contient.

Cet en-tête est toujours au stade expérimental, et est sujet à être modifié à tout moment. Méfiez-vous en si vous souhaitez l'implanter sur vos sites. Il a maintenant été renommé Permissions-Policy dans la spécification, et cet article sera mis à jour pour refléter ce changement.

Pour plus d'informations, vour l'article principal sur Feature Policy.

Type d'en-tête Response header
Forbidden header name oui

Syntaxe

Feature-Policy: <directive> <allowlist>
<directive>
La directive de Feature Policy sur laquelle appliquer la liste de permissions allowlist. Voir Directives ci-dessous pour une liste des noms de directives autorisés.
<allowlist>

An allowlist is a list of origins that takes one or more of the following values, separated by spaces:

  • *: The feature will be allowed in this document, and all nested browsing contexts (iframes) regardless of their origin.
  • 'self': The feature will be allowed in this document, and in all nested browsing contexts (iframes) in the same origin.
  • 'src': (In an iframe allow attribute only) The feature will be allowed in this iframe, as long as the document loaded into it comes from the same origin as the URL in the iframe's src attribute.

    Note: The 'src' origin is used in the iframe allow attribute only, and is the default allowlist value.

  • 'none': The feature is disabled in top-level and nested browsing contexts.
  • <origin(s)>: The feature is allowed for specific origins (for example, https://example.com). Origins should be separated by a space.

The values * (enable for all origins) or 'none' (disable for all origins) may only be used alone, while 'self' and 'src' may be used with one or more origins.

Features are each defined to have a default allowlist, which is one of:

  • *: The feature is allowed by default in top-level browsing contexts and all nested browsing contexts (iframes).
  • 'self': The feature is allowed by default in top-level browsing contexts and in nested browsing contexts (iframes) in the same origin. The feature is not allowed in cross-origin documents in nested browsing contexts.
  • 'none': The feature is disabled in top-level and nested browsing contexts.

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 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'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() (en-US) sera rejetée avec une 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 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 DOMException SecurityError.
encrypted-media (en-US)
Contrôle si le document courant est autorisé à utiliser l'API Encrypted Media Extensions (EME). Quand cette directive est désactivée, la promesse retournée par Navigator.requestMediaKeySystemAccess() (en-US) sera rejecté avec une 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 <iframe> est 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 du cadre visible.
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.
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 du passé.
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. Quand cette fonctionnalité est désactivée, la promesse retournée par Navigator.requestMIDIAccess() sera rejetée avec une exception DOMException.
navigation-override
Contrôle la disponibilité des mécanismes qui permettent à l'auteur de la page de prendre le contrôle sur le comportment 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 DOMException SecurityError.
picture-in-picture (en-US)
Controls whether the current document is allowed to play a video in a Picture-in-Picture mode via the corresponding API.
publickey-credentials-get (en-US)
Contrôle si le document courant est autorisé à use the Web Authentication API to retreive already stored public-key credentials, i.e. via navigator.credentials.get({publicKey: ..., ...}).
sync-xhr (en-US)
Contrôle si le document courant est autorisé à make synchronous XMLHttpRequest requests.
usb (en-US)
Contrôle si le document courant est autorisé à use the WebUSB API.
vr (en-US)
Contrôle si le document courant est autorisé à use the WebVR API. Quand cette directive est désactivée, la promesse retournée par Navigator.getVRDisplays() (en-US) sera rejetée avec une DOMException. Gardez en tête que la norme WebVR est en cours de remplacement au profit de WebXR.
wake-lock (en-US)
Contrôle si le document courant est autorisé à utiliser l'API Wake Lock pour indiquer que l'appareil ne devrait se mettre en veille.
screen-wake-lock (en-US)
Contrôle si le document courant est autorisé à utiliser l'API Screen Wake Lock 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 pour partager du texte, des liens, des images et d'autres contenus à des destinations arbitraires sur le choix de l'utilisateur, 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 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églementation des fonctionnalités :

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

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

Spécifications

Spécification
Permissions Policy

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi