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 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 Response-Header bietet einen Mechanismus, um die Nutzung von Browser-Funktionen in einem Dokument oder innerhalb von <iframe>-Elementen im Dokument zu erlauben oder zu verweigern.

Weitere Informationen finden Sie im Hauptartikel zur Permissions Policy.

Header-Typ Response-Header

Syntax

http
Permissions-Policy: <directive>=<allowlist>
<directive>

Die Permissions Policy-Direktive, auf die die allowlist angewendet werden soll. Siehe Direktiven unten für eine Liste der erlaubten Direktivnamen.

<allowlist>

Eine Allowlist ist eine Liste von Ursprüngen, die einen oder mehrere der folgenden Werte enthält, in Klammern eingeschlossen und durch Leerzeichen getrennt:

* (Wildcard)

Die Funktion wird in diesem Dokument und in allen verschachtelten Browsing-Kontexten (<iframe>s) unabhängig von ihrem Ursprung erlaubt.

() (leere Allowlist)

Die Funktion ist in top-level und verschachtelten Browsing-Kontexten deaktiviert. Das Äquivalent für <iframe>-allow-Attribute ist 'none'.

self

Die Funktion wird in diesem Dokument und in allen verschachtelten Browsing-Kontexten (<iframe>s) nur im selben Ursprung erlaubt. Die Funktion ist in Cross-Origin-Dokumenten in verschachtelten Browsing-Kontexten nicht erlaubt. self kann als Kurzform für https://your-site.example.com angesehen werden. Das Äquivalent für <iframe>-allow-Attribute ist self.

src

Die Funktion wird in diesem <iframe> erlaubt, solange das Dokument in demselben Ursprung wie die URL in seinem src-Attribut geladen wird. Dieser Wert wird nur im <iframe>-allow-Attribut verwendet und ist der default allowlist-Wert in <iframe>s.

"<origin>"

Die Funktion ist für bestimmte Ursprünge erlaubt (zum Beispiel "https://a.example.com"). Ursprünge sollten durch Leerzeichen getrennt werden. Beachten Sie, dass Ursprünge in <iframe>-allow-Attributen nicht in Anführungszeichen stehen.

Die Werte * und () dürfen nur allein verwendet werden, während self und src in Kombination mit einem oder mehreren Ursprüngen verwendet werden können.

Hinweis: Direktiven haben eine standardmäßige Allowlist, die immer entweder *, self oder none für den Permissions-Policy-HTTP-Header ist und das Standardverhalten steuert, wenn sie nicht explizit in einer Policy aufgeführt sind. Diese sind auf den einzelnen Direktivreferenzseiten spezifiziert. Für <iframe>-allow-Attribute ist das Standardverhalten immer src.

Wenn unterstützt, können Sie in Permissions Policy-Ursprüngen Wildcards einfügen. Dies bedeutet, dass Sie anstelle mehrerer verschiedener Subdomains in einer Allowlist alle in einem einzigen Ursprung mit einem Wildcard angeben können.

Also statt

http
("https://example.com" "https://a.example.com" "https://b.example.com" "https://c.example.com")

können Sie angeben

http
("https://example.com" "https://*.example.com")

Hinweis: "https://*.example.com" stimmt nicht mit "https://example.com" überein.

Direktiven

accelerometer Experimentell

Steuert, ob das aktuelle Dokument erlaubt ist, Informationen über die Beschleunigung des Geräts über die Accelerometer-Schnittstelle zu sammeln.

ambient-light-sensor Experimentell

Steuert, ob das aktuelle Dokument berechtigt ist, Informationen über die Lichtmenge in der Umgebung des Geräts über die AmbientLightSensor-Schnittstelle zu sammeln.

aria-notify Experimentell Nicht standardisiert

Steuert, ob das aktuelle Dokument die ariaNotify()-Methode verwenden darf, um Screenreader-Ankündigungen auszulösen.

attribution-reporting Experimentell

Steuert, ob das aktuelle Dokument die Attribution Reporting API verwenden darf.

autoplay Experimentell

Steuert, ob das aktuelle Dokument Medienautoplay über die HTMLMediaElement-Schnittstelle erlauben darf. Wenn diese Richtlinie deaktiviert ist und es keine Benutzeraktionen gab, wird das Promise, das von HTMLMediaElement.play() zurückgegeben wird, mit einem NotAllowedError-DOMException abgelehnt. Das Autoplay-Attribut für <audio>- und <video>-Elemente wird ignoriert.

bluetooth Experimentell

Steuert, ob die Verwendung der Web Bluetooth API erlaubt ist. Wenn diese Richtlinie deaktiviert ist, geben die Methoden des Bluetooth-Objekts, das von Navigator.bluetooth zurückgegeben wird, entweder false zurück oder lehnen das zurückgegebene Promise mit einem SecurityError-DOMException ab.

browsing-topics Experimentell Nicht standardisiert

Steuert den Zugang zur Topics API. Wenn eine Richtlinie die Verwendung der Topics API speziell nicht erlaubt, schlagen alle Versuche, die Document.browsingTopics()-Methode aufzurufen oder eine Anfrage mit einem Sec-Browsing-Topics-Header zu senden, mit einem NotAllowedError-DOMException fehl.

camera Experimentell

Steuert, ob das aktuelle Dokument Videogeräte verwenden darf. Das von getUserMedia() zurückgegebene Promise wird mit einem NotAllowedError-DOMException abgelehnt, wenn die Erlaubnis nicht erteilt wird.

captured-surface-control Experimentell

Steuert, ob das Dokument die Verwendung der Captured Surface Control API erlaubt ist. Das von den Hauptmethoden der API zurückgegebene Promise wird mit einem NotAllowedError-DOMException abgelehnt, wenn die Erlaubnis nicht erteilt wird.

compute-pressure Experimentell

Steuert den Zugang zur Compute Pressure API.

cross-origin-isolated Experimentell

Steuert, ob das aktuelle Dokument als cross-origin isoliert behandelt werden kann.

deferred-fetch Experimentell

Steuert die Zuweisung des fetchLater()-Kontingents des Top-Level-Ursprungs.

deferred-fetch-minimal Experimentell

Steuert die Zuweisung des geteilten kontingentierten Cross-Origin-Subframe fetchLater()-Kontingents.

display-capture Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der getDisplayMedia()-Methode zur Bildschirmaufnahme erlaubt ist. Wenn diese Richtlinie deaktiviert ist, wird das von getDisplayMedia() zurückgegebene Promise mit einem NotAllowedError-DOMException abgelehnt, wenn die Erlaubnis zur Bildschirmaufnahme nicht erteilt wird.

encrypted-media Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Encrypted Media Extensions API (EME) erlaubt ist. Wenn diese Richtlinie deaktiviert ist, wird das von Navigator.requestMediaKeySystemAccess() zurückgegebene Promise mit einem SecurityError-DOMException abgelehnt.

fullscreen Experimentell

Steuert, ob das aktuelle Dokument die Verwendung von Element.requestFullscreen() erlaubt ist. Wenn diese Richtlinie deaktiviert ist, wird das zurückgegebene Promise mit einem TypeError abgelehnt.

gamepad Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Gamepad API erlaubt ist. Wenn diese Richtlinie deaktiviert ist, werfen Aufrufe von Navigator.getGamepads() einen SecurityError-DOMException, und die gamepadconnected und gamepaddisconnected-Ereignisse werden nicht ausgelöst.

geolocation Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Geolocation-Schnittstelle erlaubt ist. Wenn diese Richtlinie deaktiviert ist, verursachen Aufrufe von getCurrentPosition() und watchPosition(), dass deren Rückruffunktionen mit einem GeolocationPositionError-Code von PERMISSION_DENIED aufgerufen werden.

gyroscope Experimentell

Steuert, ob das aktuelle Dokument berechtigt ist, Informationen über die Orientierung des Geräts über die Gyroscope-Schnittstelle zu sammeln.

hid Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der WebHID API zur Verbindung mit seltenen oder exotischen Benutzerschnittstellengeräten wie alternativen Tastaturen oder Gamepads erlaubt ist.

identity-credentials-get Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Federated Credential Management API (FedCM) erlaubt ist.

idle-detection Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Idle Detection API erlaubt ist, um zu erkennen, wann Benutzer mit ihren Geräten interagieren, beispielsweise um den Status "verfügbar"/"abwesend" in Chat-Anwendungen zu melden.

language-detector Experimentell

Steuert den Zugriff auf die Sprachenerkennungsfunktionalität der Translator and Language Detector APIs.

local-fonts Experimentell

Steuert, ob das aktuelle Dokument die Sammlung von Daten über die lokal installierten Schriften des Benutzers über die Window.queryLocalFonts()-Methode erlaubt ist (siehe auch die Local Font Access API).

magnetometer Experimentell

Steuert, ob das aktuelle Dokument berechtigt ist, Informationen über die Orientierung des Geräts über die Magnetometer-Schnittstelle zu sammeln.

microphone Experimentell

Steuert, ob das aktuelle Dokument die Verwendung von Audioeingabegeräten erlaubt ist. Wenn diese Richtlinie deaktiviert ist, wird das von MediaDevices.getUserMedia() zurückgegebene Promise mit einem NotAllowedError-DOMException abgelehnt.

midi Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Web MIDI API erlaubt ist. Wenn diese Richtlinie deaktiviert ist, wird das von Navigator.requestMIDIAccess() zurückgegebene Promise mit einem SecurityError-DOMException abgelehnt.

on-device-speech-recognition Experimentell

Steuert den Zugriff auf die On-Device-Spracherkennung der Web Speech API.

otp-credentials Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der WebOTP API erlaubt ist, um ein Einmal-Passwort (OTP) aus einer speziell formatierten SMS-Nachricht anzufordern, die von einem Server der App gesendet wurde, d.h. über navigator.credentials.get({otp: ..., ...}).

payment Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Payment Request API erlaubt ist. Wenn diese Richtlinie aktiviert ist, wird der PaymentRequest()-Konstruktor einen SecurityError-DOMException werfen.

picture-in-picture Experimentell

Steuert, ob das aktuelle Dokument ein Video im Bild-in-Bild-Modus über die entsprechende API abspielen darf.

publickey-credentials-create Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Web Authentication API zur Erstellung neuer asymmetrischer Schlüsselanmeldeinformationen erlaubt ist, d.h. über navigator.credentials.create({publicKey: ..., ...}).

publickey-credentials-get Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Web Authentication API zum Abrufen bereits gespeicherter öffentlicher Schlüsselanmeldeinformationen erlaubt ist, d.h. über navigator.credentials.get({publicKey: ..., ...}).

screen-wake-lock Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Screen Wake Lock API zur Angabe, dass das Gerät den Bildschirm nicht ausschalten oder dimmen soll, erlaubt ist.

serial Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Web Serial API zur Kommunikation mit seriellen Geräten, entweder direkt über einen seriellen Anschluss oder über USB- oder Bluetooth-Geräte, die einen seriellen Anschluss emulieren, erlaubt ist.

speaker-selection Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Audio Output Devices API zur Auflistung und Auswahl von Lautsprechern erlaubt ist.

storage-access Experimentell

Steuert, ob ein in einem Drittanbieter-Kontext geladenes Dokument (d.h. eingebettet in ein <iframe>) die Verwendung der Storage Access API zur Anforderung des Zugriffs auf unpartitionierte Cookies erlaubt ist.

translator Experimentell

Steuert den Zugriff auf die Übersetzungsfunktionalität der Translator and Language Detector APIs.

summarizer Experimentell

Steuert den Zugriff auf die Summarizer API.

usb Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der WebUSB API erlaubt ist.

web-share Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Navigator.share() der Web Share API erlaubt ist, um Text, Links, Bilder und andere Inhalte an beliebige Ziele der Wahl des Benutzers zu teilen, z.B. mobile Apps.

window-management Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der Window Management API zur Verwaltung von Fenstern auf mehreren Anzeigen erlaubt ist.

xr-spatial-tracking Experimentell

Steuert, ob das aktuelle Dokument die Verwendung der WebXR Device API zur Interaktion mit einer WebXR-Sitzung erlaubt ist.

Beispiele

Grundlegende Verwendung

Permissions-Policy-Header

Um allen Ursprüngen den Zugang zur Geolokalisierung zu erlauben, würden Sie dies tun:

http
Permissions-Policy: geolocation=*

Oder um den Zutritt zu einem Teilset von Ursprüngen zu erlauben, würden Sie dies tun:

http
Permissions-Policy: geolocation=(self "https://a.example.com" "https://b.example.com")

Mehrere Funktionen können gleichzeitig gesteuert werden, indem der Header mit einer durch Komma getrennten Liste von Richtlinien gesendet wird oder indem ein separater Header für jede Richtlinie gesendet wird.

Zum Beispiel sind die folgenden gleichwertig:

http
Permissions-Policy: picture-in-picture=(), geolocation=(self https://example.com/), camera=*

Permissions-Policy: picture-in-picture=()
Permissions-Policy: geolocation=(self https://example.com/)
Permissions-Policy: camera=*

iframes

Damit ein <iframe> eine Funktion aktiviert hat, muss der erlaubte Ursprung auch in der Allowlist der übergeordneten Seite sein. Aufgrund dieses Vererbungsverhaltens ist es eine gute Idee, die weitestgehend akzeptable Unterstützung für eine Funktion im HTTP-Header festzulegen und dann den benötigten Teilset der Unterstützung in jedem <iframe> zu spezifizieren.

Um allen Ursprüngen den Zugang zur Geolokalisierung zu erlauben, würden Sie dies tun:

html
<iframe src="https://example.com" allow="geolocation *"></iframe>

Um eine Richtlinie auf den aktuellen Ursprung und andere anzuwenden, würden Sie dies tun:

html
<iframe
  src="https://example.com"
  allow="geolocation 'self' https://a.example.com https://b.example.com"></iframe>

Das ist wichtig: Wenn ein <iframe> standardmäßig zu einem anderen Ursprung navigiert, wird die Richtlinie nicht auf den Ursprung angewendet, zu dem das <iframe> navigiert. Durch die Angabe des Ursprungs, zu dem das <iframe> im allow-Attribut navigiert, wird die auf das ursprüngliche <iframe> angewendete Permissions Policy auf den Ursprung angewendet, zu dem das <iframe> navigiert.

Mehrere Funktionen können gleichzeitig gesteuert werden, indem eine durch Semikolons separierte Liste von Richtliniendirektiven innerhalb des allow-Attributs eingefügt wird.

html
<iframe
  src="https://example.com"
  allow="geolocation 'self' https://a.example.com https://b.example.com; fullscreen 'none'"></iframe>

Es lohnt sich, dem src-Wert eine besondere Erwähnung zu geben. Wie oben erwähnt, bedeutet die Verwendung dieses Allowlist-Wertes, dass die zugehörige Funktion in diesem <iframe> erlaubt wird, solange das Dokument, das in es geladen wird, aus demselben Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert ist der default allowlist-Wert für in allow aufgelistete Funktionen, sodass die folgenden gleichwertig sind:

html
<iframe src="https://example.com" allow="geolocation 'src'"></iframe>
<iframe src="https://example.com" allow="geolocation"></iframe>

Zugangsverweigerung zu leistungsstarken Funktionen

SecureCorp Inc. möchte die Mikrofon- (z. B. MediaDevices.getUserMedia()) und Geolocation-APIs in ihrer Anwendung deaktivieren. Dies kann über den folgenden Response-Header erfolgen:

http
Permissions-Policy: microphone=(), geolocation=()

Durch die Angabe von () für die Ursprungslist werden die angegebenen Funktionen für alle Browsing-Kontexte (dazu gehören alle <iframe>s) unabhängig von ihrem Ursprung deaktiviert.

Kombination von HTTP-Header- und <iframe>-Richtlinien

Nehmen wir zum Beispiel an, dass wir die Geolokalisierungsnutzung in unserem eigenen Ursprung und in eingebettetem Inhalt von unserem vertrauenswürdigen Ad-Netzwerk ermöglichen möchten. Wir könnten die seitenweite Permissions Policy wie folgt einrichten:

http
Permissions-Policy: geolocation=(self https://trusted-ad-network.com)

In unseren Ad-<iframe>s könnten wir den Zugriff auf den https://trusted-ad-network.com-Ursprung so festlegen:

html
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>

Wenn ein anderer Ursprung in <iframe> geladen wird, hätte er keinen Zugang zur Geolokalisierung:

html
<iframe src="https://rogue-origin-example.com" allow="geolocation"></iframe>

Spezifikationen

Specification
Permissions Policy
# permissions-policy-http-header-field

Browser-Kompatibilität

Siehe auch