Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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 einen body.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

http
# 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:

http
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:

js
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.

json
[
  {
    "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.

Spezifikationen

Diese Funktion scheint in keiner Spezifikation definiert zu sein.

Browser-Kompatibilität

Siehe auch