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 iframeallow
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.The'src'
origin is used in the iframeallow
attribute only, and is the defaultallowlist
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 parHTMLMediaElement.play()
sera rejetée avec une exceptionDOMException
. L'attributautoplay
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 uneDOMException
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 uneDOMException
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 pargetDisplayMedia()
sera rejetée avec une exceptionNotAllowedError
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 modifierdocument.domain
échouera et lèvera uneDOMException
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 uneDOMException
. 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>
esthidden
oudisplay: 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 exceptionTypeError
. - 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()
etwatchPosition()
causeront un appel de leurs fonctions de rappel avec une exceptionPositionError
(en-US) dont le code estPERMISSION_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 exceptionNotAllowedError
. - 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 exceptionDOMException
. 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 uneDOMException
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 uneDOMException
. 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