En-tête Integrity-Policy-Report-Only
L'en-tête de réponse HTTP Integrity-Policy-Report-Only permet aux administrateur·ice·s de site web de signaler les ressources chargées par l'agent utilisateur qui violeraient les garanties de l'intégrité des sous-ressources si la politique d'intégrité était appliquée (en utilisant l'en-tête Integrity-Policy).
Des rapports peuvent être générés pour les requêtes sur les destinations de requête définies qui omettent les métadonnées d'intégrité, ou qui sont effectuées en mode no-cors.
Pour que les rapports soient envoyés à un point de terminaison de rapport, l'en-tête Integrity-Policy-Report-Only doit définir un nom de point de terminaison de rapport valide qui correspond à un point de terminaison déclaré à l'aide de l'en-tête Reporting-Endpoints.
Les rapports sont générés à l'aide de l'API Reporting et peuvent également être observés dans la page pour laquelle la politique d'intégrité est signalée, à l'aide d'un ReportingObserver.
Le format du corps du rapport est donné par le dictionnaire IntegrityViolationReportBody (une forme sérialisée en JSON de ce corps est envoyée en POST aux points de terminaison du serveur de rapport).
Cet en-tête permet aux développeur·euse·s de tester les politiques d'intégrité et de corriger les problèmes de contenu avant de déployer finalement un en-tête Integrity-Policy pour appliquer la politique.
| Type d'en-tête | En-tête de réponse |
|---|
Syntaxe
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Les valeurs de l'en-tête sont définies comme des dictionnaires de champs structurés avec les clés suivantes :
blocked-destinations-
Une liste de destinations de requête qui doivent inclure des métadonnées d'intégrité valides. Les valeurs autorisées sont :
script-
Ressources de script.
styleExpérimental-
Ressources de feuille de style.
sourcesFacultatif-
Une liste de sources d'intégrité qui doivent inclure des métadonnées d'intégrité. Les valeurs autorisées sont :
inline-
La source des métadonnées d'intégrité est incluse dans le contenu, comme l'attribut d'intégrité. Il s'agit de la valeur par défaut.
Comme il s'agit de la valeur par défaut et de la seule valeur, omettre
sourceséquivaut à définirsources=(inline).
endpointsFacultatif-
Une liste de noms de points de terminaison de rapport qui indiquent où les rapports seront envoyés. Les points de terminaison de rapport doivent être définis dans un en-tête
Reporting-Endpoints.
Exemples
>Signaler lorsque les scripts n'ont pas de métadonnées d'intégrité
Cet exemple montre un document qui signale lorsque l'élément HTML <script> (ou HTMLScriptElement) ne définit pas d'attribut integrity, ou lorsqu'une ressource de script est demandée en mode no-cors.
Notez que le integrity-endpoint utilisé dans Integrity-Policy-Report-Only est défini dans l'en-tête Reporting-Endpoints.
Reporting-Endpoints: integrity-endpoint=https://exemple.com/integrity, backup-integrity-endpoint=https://report-provider.exemple/integrity
Integrity-Policy-Report-Only: blocked-destinations=(script), endpoints=(integrity-endpoint, backup-integrity-endpoint)
La charge utile du rapport pourrait ressembler à ceci.
{
"type": "integrity-violation",
"url": "https://exemple.com",
"body": {
"documentURL": "https://exemple.com",
"blockedURL": "https://exemple.com/main.js",
"destination": "script",
"reportOnly": false
}
}
Spécifications
| Specification |
|---|
| Subresource Integrity> # integrity-policy-section> |
Compatibilité des navigateurs
Voir aussi
- L'en-tête
Integrity-Policy - L'en-tête
Reporting-Endpoints - Politique d'intégrité
- L'API Reporting