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 valeurbody.dispositionde"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
# 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 :
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 :
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.
[
{
"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
- Politique de permissions
- Les interfaces API
Document.featurePolicyetFeaturePolicy - L'en-tête
Content-Security-Policy - L'en-tête
Referrer-Policy - L'en-tête
Reporting-Endpoints - L'interface API
PermissionsPolicyViolationReport - L'interface API
ReportingObserver - L'API Reporting