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 Antwort-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 | Antwort-Header |
|---|---|
| Verbotener Anfrage-Header | ja |
Syntax
Permissions-Policy: <directive>=<allowlist>
<directive>-
Die Permissions-Policy-Direktive, auf die die
allowlistangewendet werden soll. Weitere Informationen finden Sie unter Directives unten für eine Liste der zugelassenen Direktivnamen. <allowlist>-
Eine Allowlist ist eine Liste von Ursprüngen, die einen oder mehrere der folgenden Werte in Klammern enthält, getrennt durch Leerzeichen:
*(Wildcard)-
Die Funktion wird in diesem Dokument und in allen geschachtelten Browsing-Kontexten (
<iframe>s) unabhängig von ihrem Ursprung erlaubt. ()(leere Allowlist)-
Die Funktion ist in obersten und geschachtelten Browsing-Kontexten deaktiviert. Das Äquivalent für
<iframe>-allow-Attribute ist'none'. self-
Die Funktion wird in diesem Dokument und in allen geschachtelten Browsing-Kontexten (
<iframe>s) im selben Ursprung erlaubt. Die Funktion ist in fremden Dokumenten in geschachtelten Browsing-Kontexten nicht erlaubt.selfkann als Abkürzung fürhttps://your-site.example.combetrachtet werden. Das Äquivalent für<iframe>-allow-Attribute istself. src-
Die Funktion wird in diesem
<iframe>erlaubt, solange das darin geladene Dokument vom selben Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert wird nur im<iframe>-allow-Attribut verwendet und ist der defaultallowlist-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ährendselfundsrcin Kombination mit einem oder mehreren Ursprüngen verwendet werden können.Hinweis: Direktiven haben eine Standard-Allowlist, die immer einer von
*,selfodernonefür denPermissions-PolicyHTTP-Header ist, und die das Standardverhalten regelt, wenn sie nicht explizit in einer Richtlinie aufgeführt sind. Diese sind auf den einzelnen Richtlinien-Referenzseiten angegeben. Für<iframe>-allow-Attribute ist das Standardverhalten immersrc.
Wo unterstützt, können Sie Wildcards in Permissions-Policy-Ursprüngen einschließen. Das bedeutet, dass Sie anstatt mehrerer verschiedener Subdomains explizit in einer Allowlist anzugeben, alle in einem einzigen Ursprung mit Wildcard angeben können.
Stattdessen:
("https://example.com" "https://a.example.com" "https://b.example.com" "https://c.example.com")
Können Sie angeben:
("https://example.com" "https://*.example.com")
Hinweis:
"https://*.example.com" stimmt nicht mit "https://example.com" überein.
Direktiven
accelerometerExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Informationen über die Beschleunigung des Geräts über die
Accelerometer-Schnittstelle zu sammeln. ambient-light-sensorExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Informationen über die Lichtmenge in der Umgebung des Geräts mithilfe der
AmbientLightSensor-Schnittstelle zu sammeln. aria-notifyExperimentell Nicht standardisiert-
Steuert, ob dem aktuellen Dokument erlaubt ist, die
ariaNotify()-Methode zu verwenden, um Screenreader-Ankündigungen auszulösen. attribution-reportingExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Attribution Reporting API erlaubt ist.
autoplayExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Medien abzuspielen, die über die
HTMLMediaElement-Schnittstelle angefordert werden. Wenn diese Richtlinie deaktiviert ist und keine Nutzerinteraktionen vorliegen, wird das vonHTMLMediaElement.play()zurückgegebenePromisemit einemNotAllowedErrorDOMExceptionabgelehnt. Das Autoplay-Attribut auf<audio>und<video>-Elementen wird ignoriert. bluetoothExperimentell-
Steuert, ob die Nutzung der Web Bluetooth API erlaubt ist. Wenn diese Richtlinie deaktiviert ist, werden die Methoden des
Bluetooth-Objekts, das vonNavigator.bluetoothzurückgegeben wird, entwederfalsezurückgeben oder das zurückgegebenePromisemit einemSecurityErrorDOMExceptionablehnen. browsing-topicsExperimentell Nicht standardisiert-
Steuert den Zugriff auf die Topics API. Wenn eine Richtlinie die Nutzung der Topics API ausdrücklich untersagt, schlagen alle Versuche, die
Document.browsingTopics()-Methode aufzurufen oder eine Anfrage mit einemSec-Browsing-Topics-Header zu senden, mit einemNotAllowedErrorDOMExceptionfehl. cameraExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung von Videoeingabegeräten erlaubt ist. Das
Promise, das vongetUserMedia()zurückgegeben wird, wird mit einemNotAllowedErrorDOMExceptionabgelehnt, wenn die Erlaubnis nicht erteilt wurde. captured-surface-controlExperimentell-
Steuert, ob das Dokument die Captured Surface Control API verwenden darf. Das von den Hauptmethoden der API zurückgegebene Versprechen wird mit einem
NotAllowedErrorDOMExceptionabgelehnt, wenn die Erlaubnis nicht erteilt wurde. compute-pressureExperimentell-
Steuert den Zugriff auf die Compute Pressure API.
cross-origin-isolatedExperimentell-
Steuert, ob das aktuelle Dokument als cross-origin isolated behandelt werden kann.
deferred-fetchExperimentell-
Steuert die Zuweisung des
fetchLater()-Kontingents für den obersten Ursprung. deferred-fetch-minimalExperimentell-
Steuert die Zuweisung des geteilten fremd-originären Unterrahmen-
fetchLater()-Kontingents. display-captureExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der
getDisplayMedia()-Methode zur Aufnahme von Bildschirm-Inhalten gestattet ist. Wenn diese Richtlinie deaktiviert ist, wird das vongetDisplayMedia()zurückgegebene Versprechen mit einemNotAllowedErrorDOMExceptionabgelehnt, wenn keine Berechtigung zur Erfassung des Bildschirminhalts erteilt wird. encrypted-mediaExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Encrypted Media Extensions API (EME) erlaubt ist. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMediaKeySystemAccess()zurückgegebenePromisemit einemSecurityErrorDOMExceptionabgelehnt. fullscreenExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist,
Element.requestFullscreen()zu verwenden. Wenn diese Richtlinie deaktiviert ist, wird das zurückgegebenePromisemit einemTypeErrorabgelehnt. gamepadExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die Gamepad API zu verwenden. Wenn diese Richtlinie deaktiviert ist, werden Anrufe an
Navigator.getGamepads()einenSecurityErrorDOMExceptionauslösen, und diegamepadconnectedundgamepaddisconnected-Ereignisse werden nicht ausgelöst. geolocationExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die
Geolocation-Schnittstelle zu verwenden. Wenn diese Richtlinie deaktiviert ist, führen Anrufe angetCurrentPosition()undwatchPosition()dazu, dass die Rückruf-Funktionen dieser Methoden mit einemGeolocationPositionError-Code vonPERMISSION_DENIEDaufgerufen werden. gyroscopeExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Informationen über die Ausrichtung des Geräts über die
Gyroscope-Schnittstelle zu sammeln. hidExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die WebHID API zu verwenden, um sich mit ungewöhnlichen oder exotischen Human Interface Devices, wie alternativen Tastaturen oder Gamepads, zu verbinden.
identity-credentials-getExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Federated Credential Management API (FedCM) erlaubt ist.
idle-detectionExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Idle Detection API zum Erkennen von Benutzerinteraktionen mit ihren Geräten, z. B. um den "verfügbar"/"abwesend"-Status in Chat-Anwendungen zu melden, erlaubt ist.
language-detectorExperimentell-
Steuert den Zugriff auf die Sprachenerkennungsfunktionalität der Translator and Language Detector APIs.
local-fontsExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Daten über die lokal installierten Schriften des Benutzers über die
Window.queryLocalFonts()-Methode zu sammeln (siehe auch die Local Font Access API). magnetometerExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Informationen über die Ausrichtung des Geräts über die
Magnetometer-Schnittstelle zu sammeln. microphoneExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, Audioeingabegeräte zu verwenden. Wenn diese Richtlinie deaktiviert ist, wird das von
MediaDevices.getUserMedia()zurückgegebenePromisemit einemNotAllowedErrorDOMExceptionabgelehnt. midiExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die Web MIDI API zu verwenden. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMIDIAccess()zurückgegebenePromisemit einemSecurityErrorDOMExceptionabgelehnt. on-device-speech-recognitionExperimentell-
Steuert den Zugriff auf die On-Device-Speech-Recognition-Funktionalität der Web Speech API.
otp-credentialsExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der WebOTP API erlaubt ist, um ein Einmalpasswort (OTP) aus einer speziell formatierten SMS-Nachricht anzufordern, die vom Server der App gesendet wird, z. B. über
navigator.credentials.get({otp: ..., ...}). paymentExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Payment Request API erlaubt ist. Wenn diese Richtlinie aktiviert ist, löst der
PaymentRequest()-Konstruktor einenSecurityErrorDOMExceptionaus. picture-in-pictureExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, ein Video über die entsprechende API im Bild-in-Bild-Modus abzuspielen.
publickey-credentials-createExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die Web Authentication API zu verwenden, um neue asymmetrische Schlüsselanmeldeinformationen zu erstellen, z. B. über
navigator.credentials.create({publicKey: ..., ...}). publickey-credentials-getExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die Web Authentication API zu verwenden, um bereits gespeicherte öffentliche Schlüsselanmeldeinformationen abzurufen, z. B. über
navigator.credentials.get({publicKey: ..., ...}). screen-wake-lockExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die Screen Wake Lock API zu verwenden, um anzuzeigen, dass das Gerät den Bildschirm nicht ausschalten oder dimmen sollte.
serialExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Web Serial API erlaubt ist, um mit seriellen Geräten zu kommunizieren, die entweder direkt über einen seriellen Anschluss oder über USB- oder Bluetooth-Geräte, die einen seriellen Anschluss emulieren, angeschlossen sind.
speaker-selectionExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der Audio Output Devices API zum Auflisten und Auswählen von Lautsprechern erlaubt ist.
storage-accessExperimentell-
Steuert, ob einem Dokument, das in einem Drittanbieter-Kontext geladen wird (d.h. eingebettet in ein
<iframe>), die Nutzung der Storage Access API erlaubt ist, um Zugriff auf nicht partitionierte Cookies zu beantragen. translatorExperimentell-
Steuert den Zugriff auf die Übersetzungsfunktionalität der Translator and Language Detector APIs.
summarizerExperimentell-
Steuert den Zugriff auf die Summarizer API.
usbExperimentell-
Steuert, ob dem aktuellen Dokument die Nutzung der WebUSB API erlaubt ist.
-
Steuert, ob dem aktuellen Dokument erlaubt ist, die
Navigator.share()der Web Share API zu verwenden, um Text, Links, Bilder und andere Inhalte an beliebige Ziele zu übermitteln, die der Benutzer wählt, z. B. mobile Apps. window-managementExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die Window Management API zu verwenden, um Fenster auf mehreren Bildschirmen zu verwalten.
xr-spatial-trackingExperimentell-
Steuert, ob dem aktuellen Dokument erlaubt ist, die WebXR Device API zu verwenden, um mit einer WebXR-Sitzung zu interagieren.
Beispiele
>Grundlegende Verwendung
Permissions-Policy-Header
Um allen Ursprüngen Zugang zur Geolokalisierung zu gewähren, könnten Sie Folgendes tun:
Permissions-Policy: geolocation=*
Oder um den Zugang auf eine Teilmenge von Ursprüngen zu erlauben, könnten Sie Folgendes tun:
Permissions-Policy: geolocation=(self "https://a.example.com" "https://b.example.com")
Mehrere Funktionen können gleichzeitig gesteuert werden, indem man den Header mit einer durch Kommas getrennten Liste von Richtlinien sendet oder indem man für jede Richtlinie einen separaten Header sendet.
Zum Beispiel sind die folgenden gleichwertig:
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 sein zugelassener Ursprung auch in der Allowlist für die übergeordnete Seite sein. Aufgrund dieses Vererbungsverhaltens ist es eine gute Idee, die größtmögliche Unterstützung für eine Funktion im HTTP-Header zu spezifizieren und dann die Teilmenge der Unterstützung anzugeben, die Sie in jedem <iframe> benötigen.
Um allen Ursprüngen Zugang zur Geolokalisierung zu gewähren, könnten Sie Folgendes tun:
<iframe src="https://example.com" allow="geolocation *"></iframe>
Um eine Richtlinie auf den aktuellen Ursprung und andere anzuwenden, könnten Sie Folgendes tun:
<iframe
src="https://example.com"
allow="geolocation 'self' https://a.example.com https://b.example.com"></iframe>
Dies ist wichtig: Standardmäßig wird die Richtlinie nicht auf den Ursprung angewendet, zu dem das <iframe> navigiert, wenn ein <iframe> zu einem anderen Ursprung navigiert. Durch die Auflistung des Ursprungs, zu dem das <iframe> navigiert, im allow-Attribut, wird die ursprünglich auf das <iframe> angewendete Berechtigungsrichtlinie auf den Ursprung angewendet, zu dem das <iframe> navigiert.
Mehrere Funktionen können gleichzeitig gesteuert werden, indem eine durch Semikolons getrennte Liste von Richtlinien-Direktiven innerhalb des allow-Attributs eingeschlossen wird.
<iframe
src="https://example.com"
allow="geolocation 'self' https://a.example.com https://b.example.com; fullscreen 'none'"></iframe>
Es ist erwähnenswert, den src-Wert besonders hervorzuheben. Wir haben oben erwähnt, dass die Verwendung dieses Allowlist-Werts bedeutet, dass die zugeordnete Funktion in diesem <iframe> erlaubt wird, solange das darin geladene Dokument vom selben Ursprung stammt wie die URL in seinem src-Attribut. Dieser Wert ist der default allowlist-Wert für im allow aufgelistete Funktionen, daher sind die folgenden gleichwertig:
<iframe src="https://example.com" allow="geolocation 'src'">
<iframe src="https://example.com" allow="geolocation"></iframe
></iframe>
Den Zugriff auf leistungsstarke Funktionen verweigern
SecureCorp Inc. möchte die Mikrofon- (z. B. MediaDevices.getUserMedia()) und Geolocation-APIs in ihrer Anwendung deaktivieren. Dies kann mit folgendem Antwort-Header erfolgen:
Permissions-Policy: microphone=(), geolocation=()
Durch das Angeben von () für die Ursprungs-Liste werden die angegebenen Funktionen für alle Browsing-Kontexte (einschließlich aller <iframe>s) unabhängig von ihrem Ursprung deaktiviert.
Kombination von HTTP-Header und <iframe>-Richtlinien
Nehmen wir an, wir möchten die Nutzung der Geolokalisierung auf unserem eigenen Ursprung und in eingebetteten Inhalten unseres vertrauenswürdigen Werbenetzwerks ermöglichen. Wir könnten die seitenweite Berechtigungsrichtlinie wie folgt einrichten:
Permissions-Policy: geolocation=(self https://trusted-ad-network.com)
In unseren Werbe-<iframe>s könnten wir den Zugriff auf den Ursprung https://trusted-ad-network.com wie folgt einstellen:
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>
Wenn ein anderer Ursprung im <iframe> geladen wird, hätte er keinen Zugriff auf die Geolokalisierung:
<iframe src="https://rogue-origin-example.com" allow="geolocation"></iframe>
Spezifikationen
| Specification |
|---|
| Permissions Policy> # permissions-policy-http-header-field> |
Browser-Kompatibilität
Loading…