Integrity-Policy-Report-Only header
Der HTTP-Integrity-Policy-Report-Only-Antwortheader ermöglicht es Website-Administratoren, Berichte über Ressourcen zu erstellen, die der User-Agent lädt und die die Subresource Integrity-Garantie verletzen würden, wenn die Integritätsrichtlinie durchgesetzt würde (durch den Integrity-Policy-Header).
Berichte können für Anfragen zu angegebenen Request-Destinationen erstellt werden, bei denen Integritätsmetadaten fehlen oder die im no-cors Modus gemacht wurden. Damit Berichte an einen Berichts-Endpunkt gesendet werden können, muss der Integrity-Policy-Report-Only-Header einen gültigen Berichts-Endpunktnamen angeben, der einem Endpunkt entspricht, der mit dem Reporting-Endpoints-Header deklariert wurde. Berichte werden mithilfe der Reporting API generiert und können auch auf der Seite beobachtet werden, für die die Integritätsrichtlinie gemeldet wird, mit einem ReportingObserver. Das Format des Berichtskörpers wird durch das IntegrityViolationReportBody-Wörterbuch angegeben (eine JSON-serielle Form dieses Körpers wird in POST-Anfragen an Berichtsserver-Endpunkte gesendet).
Der Header ermöglicht es Entwicklern, Integritätsrichtlinien zu testen und gegebenenfalls Inhaltsprobleme zu beheben, bevor schließlich ein Integrity-Policy-Header eingesetzt wird, um die Richtlinie durchzusetzen.
| Header-Typ | Response-Header |
|---|---|
| Verbotener Anforderungsheader | nein |
Syntax
Integrity-Policy-Report-Only: blocked-destinations=(<destination>),sources=(<source>),endpoints=(<endpoint>)
Die Header-Werte werden als strukturierte Felddictionaries mit den folgenden Schlüsseln definiert:
blocked-destinations-
Eine Liste von Request-Destinationen, die gültige Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
sourcesOptional-
Eine Liste von Integritätsquellen, die Integritätsmetadaten enthalten müssen. Erlaubte Werte sind:
inline-
Die Integritätsmetadatenquelle ist inline zum Inhalt, wie das Integritätsattribut. Dies ist die Standardeinstellung.
Da dies der Standard und der einzige Wert ist, ist das Weglassen von
sourcesgleichbedeutend mit der Angabe vonsources=(inline).
endpointsOptional-
Eine Liste von Berichts-Endpunktnamen, die angeben, wohin Berichte gesendet werden. Die Berichts-Endpunkte müssen in einem
Reporting-Endpoints-Header definiert werden.
Beispiele
>Berichtserstellung, wenn Skripte Integritätsmetadaten fehlen
Dieses Beispiel zeigt ein Dokument, das meldet, wenn ein <script> (oder HTMLScriptElement) kein integrity-Attribut angibt oder wenn eine Skriptressource im no-cors-Modus angefordert wird.
Beachten Sie, dass der in Integrity-Policy-Report-Only verwendete integrity-endpoint im Reporting-Endpoints-Header definiert ist.
Reporting-Endpoints: integrity-endpoint=https://example.com/integrity, backup-integrity-endpoint=https://report-provider.example/integrity
Integrity-Policy-Report-Only: blocked-destinations=(script), endpoints=(integrity-endpoint, backup-integrity-endpoint)
Die Berichtsnutzlast könnte wie folgt aussehen.
{
"type": "integrity-violation",
"url": "https://example.com",
"body": {
"documentURL": "https://example.com",
"blockedURL": "https://example.com/main.js",
"destination": "script",
"reportOnly": false
}
}
Spezifikationen
| Specification |
|---|
| Subresource Integrity> # integrity-policy-section> |
Browser-Kompatibilität
Loading…