Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

En-tête Permissions-Policy-Report-Only

Expérimental: Il s'agit d'une technologie expérimentale.
Vérifiez attentivement le tableau de compatibilité des navigateurs avant de l'utiliser en production.

L'en-tête de réponse HTTP Permissions-Policy-Report-Only fournit un mécanisme permettant aux administrateur·ice·s de sites Web de signaler les violations d'une Permissions-Policy sans les appliquer. Cela permet de tester et de corriger les problèmes de politique d'autorisations avant le déploiement d'une politique.

La syntaxe et le comportement sont exactement les mêmes que pour Permissions-Policy, sauf que :

  • La politique n'est pas appliquée.
  • Les objets de rapport de violation de politique (PermissionsPolicyViolationReport) ont une valeur body.disposition de "report" au lieu de "enforce".

Voir Permissions-Policy pour plus d'informations (la plupart de son contenu n'a pas été dupliqué ci-dessous).

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

Syntaxe

http
# Directive unique
Permissions-Policy-Report-Only: <directive>=<allowlist>

# Directive unique avec point de terminaison de signalement
Permissions-Policy-Report-Only: <directive>=<allowlist>;report-to=<endpoint>

# Directives multiples, avec et sans points de terminaison de signalement
Permissions-Policy-Report-Only: <directive>=<allowlist>, <directive>=<allowlist>;report-to=<endpoint>, ...

Exemples

Utilisation simple

SecureCorp Inc. souhaite désactiver l'API Geolocation dans son application. Avant de déployer la politique en utilisant Permissions-Policy, elle ajoute les en-têtes Permissions-Policy-Report-Only et Reporting-Endpoints comme indiqué ci-dessous :

http
Reporting-Endpoints: geo_endpoint="https://example.com/reports"
Permissions-Policy-Report-Only: geolocation=();report-to=geo_endpoint

En définissant geolocation=() pour la liste d'origines, il s'agit d'une violation pour tout contexte de navigation d'accéder à la géolocalisation (cela inclut les <iframe>), quelle que soit l'origine. Le paramètre report-to indique que les rapports seront envoyés au point de terminaison nommé geo_endpoint. La correspondance entre geo_endpoint et l'URL où les rapports doivent être envoyés est fournie dans Reporting-Endpoints.

Une violation se produit lorsqu'une page tente d'utiliser la fonctionnalité bloquée, par exemple :

js
navigator.geolocation.getCurrentPosition(
  () => {},
  () => {},
);

Le contenu du rapport envoyé au point de terminaison aura la même structure que l'exemple JSON ci-dessous. Il s'agit du même rapport que pour Permissions-Policy, à l'exception de la valeur de body.disposition.

json
[
  {
    "age": 48512,
    "body": {
      "columnNumber": 29,
      "disposition": "report", // Une violation qui est signalée mais non appliquée
      "lineNumber": 44,
      "message": "Permissions policy violation: geolocation access has been blocked because of a permissions policy applied to the current document.",
      "featureId": "geolocation",
      "sourceFile": "https://example.com/"
    },
    "type": "permissions-policy-violation",
    "url": "https://example.com/",
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36"
  }
]

Note : La sérialisation côté serveur des rapports de violation par Chrome utilise policyId plutôt que featureId pour le nom de la fonctionnalité dans le corps (body) d'un rapport serveur. Le PermissionsPolicyViolationReport retourné par un ReportingObserver suit la spécification.

Spécifications

Spécification
Permissions Policy
# permissions-policy-report-only-http-header-field

Compatibilité des navigateurs

Voir aussi