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
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'attributallow
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'attributsrc
de l'élément HTML.Note : L'origine
'src'
est uniquement utilisée pour la listeallow
d'une iframe. Pour ces éléments, il s'agit de la valeur par défaut pourallowlist
. -
'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 parHTMLMediaElement.play()
sera rejetée avec une exceptionDOMException
. L'attributautoplay
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 exceptionDOMException
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 exceptionDOMException
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 pargetDisplayMedia()
sera rejetée avec une exceptionNotAllowedError
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 modifierdocument.domain
échouera et lèvera une exceptionDOMException
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 exceptionDOMException
. 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'attributhidden
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 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 exceptionTypeError
. 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ènementsgamepadconnected
etgamepaddisconnected
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()
etwatchPosition()
causeront un appel de leurs fonctions de rappel avec une exceptionPositionError
dont le code estPERMISSION_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 exceptionNotAllowedError
. 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 exceptionDOMException
. -
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 exceptionDOMException
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.
-
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 :
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