Permissions-Policy-Report-Only header
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Der HTTP-Permissions-Policy-Report-Only-Antwort-Header bietet eine Möglichkeit für Website-Administratoren, Verstöße gegen eine Permissions-Policy zu melden, ohne diese durchzusetzen. Dies ermöglicht das Testen und Beheben von Permissions Policy-Problemen, bevor eine Richtlinie implementiert wird.
Die Syntax und das Verhalten sind genau wie bei Permissions-Policy, mit folgenden Ausnahmen:
- Die Richtlinie wird nicht durchgesetzt.
- Objekte zur Richtlinienverletzungsberichterstattung (
PermissionsPolicyViolationReport) haben einenbody.disposition-Wert von"report"anstelle von"enforce".
Siehe Permissions-Policy für weitere Informationen (der größte Teil der Inhalte wurde unten nicht dupliziert).
| Header-Typ | Antwort-Header |
|---|
Syntax
# Single directive
Permissions-Policy-Report-Only: <directive>=<allowlist>
# Single directive with reporting endpoint
Permissions-Policy-Report-Only: <directive>=<allowlist>;report-to=<endpoint>
# Multiple directives, with and without server reporting endpoints
Permissions-Policy-Report-Only: <directive>=<allowlist>, <directive>=<allowlist>;report-to=<endpoint>, ...
Beispiele
>Grundlegende Nutzung
SecureCorp Inc. möchte die Geolocation-API in seiner Anwendung deaktivieren. Bevor die Richtlinie mit Permissions-Policy eingeführt wird, fügt es die Header Permissions-Policy-Report-Only und Reporting-Endpoints wie unten gezeigt hinzu:
Reporting-Endpoints: geo_endpoint="https://example.com/reports"
Permissions-Policy-Report-Only: geolocation=();report-to=geo_endpoint
Indem geolocation=() für die Ursprungslisten angegeben wird, liegt ein Verstoß vor, wenn irgendein Browsing-Kontext auf die Geolocation zugreift (dies schließt <iframe>s ein), unabhängig vom Ursprung. Der report-to-Parameter gibt an, dass Berichte an den Endpunkt mit dem Namen geo_endpoint gesendet werden. Die Zuordnung zwischen geo_endpoint und der URL, an die Berichte gesendet werden sollen, wird in Reporting-Endpoints bereitgestellt.
Ein Verstoß tritt auf, wenn eine Seite versucht, die blockierte Funktion zu nutzen, zum Beispiel:
navigator.geolocation.getCurrentPosition(
() => {},
() => {},
);
Das an den Endpunkt gesendete Berichtsnutzlast hat dieselbe Struktur wie das unten gezeigte JSON-Beispiel. Dies ist dasselbe wie ein Bericht für Permissions-Policy, mit Ausnahme des Wertes von body.disposition.
[
{
"age": 48512,
"body": {
"columnNumber": 29,
"disposition": "report", // A violation that is reported but not enforced
"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"
}
]
Hinweis:
Die serverseitige Serialisierung von Verstoßberichten durch Chrome verwendet policyId anstelle von featureId für den Funktionsnamen im body eines Serverberichts. Der von einem ReportingObserver zurückgegebene PermissionsPolicyViolationReport folgt der Spezifikation.