Feature-Policy

Expérimental: 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).

Type d'en-tête En-tête de réponse
Nom d'en-tête interdit Oui

Syntaxe

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

ambient-light-sensor

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.

autoplay

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

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

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

Contrôle si le document courant est autorisé ou non à utiliser la méthode getDisplayMedia() 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

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

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() 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

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

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

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 dont le code est PERMISSION_DENIED.

gyroscope

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

layout-animations

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

legacy-image-formats

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

magnetometer

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

microphone

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

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.

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

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

payment

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

picture-in-picture

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

publickey-credentials-get

Contrôle si le document courant est autorisé à utiliser l'API Web Authentication 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

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

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

unoptimized-images 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 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

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

screen-wake-lock

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

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 vers des cibles arbitraires, par exemple à des applications mobiles.

xr-spatial-tracking

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 :

http
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