Permissions-Policy header
Limited availability
This feature is not Baseline because it does not work in some of the most widely-used browsers.
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 Verwendung von Browser-Features in einem Dokument oder innerhalb von <iframe>-Elementen im Dokument zu erlauben oder zu verweigern.
Für weitere Informationen siehe den Hauptartikel zur Permissions Policy.
| Header-Typ | Response-Header |
|---|
Syntax
Permissions-Policy: <directive>=<allowlist>
<directive>-
Die Permissions Policy-Direktive, auf die die
Allowlistangewendet werden soll. Siehe unten unter Direktiven die Liste der erlaubten Direktivnamen. <allowlist>-
Eine Allowlist ist eine Liste von Ursprüngen, die einen oder mehrere der folgenden Werte enthält, die in Klammern angegeben und durch Leerzeichen getrennt sind:
*(Wildcard)-
Das Feature wird in diesem Dokument und allen verschachtelten Browsing-Kontexten (
<iframe>s) unabhängig von ihrem Ursprung erlaubt. ()(leere Allowlist)-
Das Feature ist in obersten und verschachtelten Browsing-Kontexten deaktiviert. Das Äquivalent für
<iframe>allow-Attribute ist'none'. self-
Das Feature wird in diesem Dokument und in allen verschachtelten Browsing-Kontexten (
<iframe>s) erlaubt, die nur demselben Ursprung angehören. Das Feature ist in verschachtelten, ursprungsübergreifenden Dokumenten nicht erlaubt.selfkann als Abkürzung fürhttps://your-site.example.combetrachtet werden. Das Äquivalent für<iframe>allow-Attribute istself. src-
Das Feature wird in diesem
<iframe>erlaubt, solange das geladene Dokument vom gleichen Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert wird nur im<iframe>-allow-Attribut verwendet und ist der StandardAllowlist-Wert in<iframe>s. "<origin>"-
Das Feature 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 gesetzt sind.
Die Werte
*und()dürfen nur einzeln 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-Policy-HTTP-Header ist und das Standardverhalten regelt, wenn sie nicht explizit in einer Richtlinie aufgeführt sind. Diese sind in den einzelnen Direktivreferenzseiten spezifiziert. Für<iframe>-allow-Attribute ist das Standardverhalten immersrc.
Wo unterstützt, können Sie Wildcards in Permissions-Policy-Ursprüngen einfügen. Das bedeutet, dass Sie, anstatt mehrere verschiedene Subdomains explizit in einer Allowlist anzugeben, alle in einem einzigen Ursprung mit einem Wildcard spezifizieren können.
Also anstatt
("https://example.com" "https://a.example.com" "https://b.example.com" "https://c.example.com")
Können Sie spezifizieren
("https://example.com" "https://*.example.com")
Hinweis:
"https://*.example.com" stimmt nicht mit "https://example.com" überein.
Direktiven
accelerometerExperimentell-
Steuert, ob das aktuelle Dokument Informationen über die Beschleunigung des Geräts über die
Accelerometer-Schnittstelle sammeln darf. ambient-light-sensorExperimentell-
Steuert, ob das aktuelle Dokument über die
AmbientLightSensor-Schnittstelle Informationen über die Lichtmenge in der Umgebung des Geräts sammeln darf. aria-notifyExperimentell Nicht standardisiert-
Steuert, ob das aktuelle Dokument die
ariaNotify()-Methode verwenden darf, um Screen-Reader-Ankündigungen auszulösen. attribution-reportingVeraltet-
Steuert, ob das aktuelle Dokument die Attribution Reporting API verwenden darf.
autoplayExperimentell-
Steuert, ob das aktuelle Dokument Medien, die über die
HTMLMediaElement-Schnittstelle angefordert wurden, automatisch abspielen darf. Wenn diese Richtlinie deaktiviert ist und es keine Nutzergesten gab, wird das vonHTMLMediaElement.play()zurückgegebenePromisemit einemNotAllowedError-DOMExceptionzurückgewiesen. Dasautoplay-Attribut auf<audio>- und<video>-Elementen wird ignoriert. bluetoothExperimentell-
Steuert, ob die Verwendung der Web Bluetooth API erlaubt ist. Wenn diese Richtlinie deaktiviert ist, geben die Methoden des
Bluetooth-Objekts, das vonNavigator.bluetoothzurückgegeben wird, entwederfalsezurück oder lehnen das zurückgegebenePromisemit einemSecurityError-DOMExceptionab. browsing-topicsVeraltet Nicht standardisiert-
Steuert den Zugriff auf die Topics API. Wo eine Richtlinie speziell die Verwendung der Topics API untersagt, wird jeder Versuch, die
Document.browsingTopics()-Methode aufzurufen oder eine Anfrage mit einemSec-Browsing-Topics-Header zu senden, mit einemNotAllowedError-DOMExceptionfehlschlagen. cameraExperimentell-
Steuert, ob das aktuelle Dokument Videoinputgeräte verwenden darf. Das von
getUserMedia()zurückgegebenePromisewird mit einemNotAllowedError-DOMExceptionabgelehnt, wenn die Erlaubnis nicht gegeben ist. captured-surface-controlExperimentell-
Steuert, ob das Dokument die Captured Surface Control API verwenden darf. Das Versprechen, das von den Hauptmethoden der API zurückgegeben wird, wird mit einem
NotAllowedError-DOMExceptionabgelehnt, wenn die Erlaubnis nicht gegeben ist. 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 Zuteilung der
fetchLater()-Quote für den übergeordneten Ursprung. deferred-fetch-minimalExperimentell-
Steuert die Zuteilung der
fetchLater()-Quote für subgrenzüberschreitende eingebettete Frames. display-captureExperimentell-
Steuert, ob das aktuelle Dokument die
getDisplayMedia()-Methode zum Erfassen von Bildschirmansichten verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das vongetDisplayMedia()zurückgegebene Versprechen mit einemNotAllowedError-DOMExceptionabgelehnt, wenn keine Berechtigung zum Erfassen der Bildschirmansicht erteilt wurde. encrypted-mediaExperimentell-
Steuert, ob das aktuelle Dokument die Encrypted Media Extensions API (EME) verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMediaKeySystemAccess()zurückgegebenePromisemit einemSecurityError-DOMExceptionabgelehnt. fullscreenExperimentell-
Steuert, ob das aktuelle Dokument
Element.requestFullscreen()verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das zurückgegebenePromisemit einemTypeErrorabgelehnt. gamepadExperimentell-
Steuert, ob das aktuelle Dokument die Gamepad API verwenden darf. Wenn diese Richtlinie deaktiviert ist, werden Aufrufe von
Navigator.getGamepads()einenSecurityError-DOMExceptionwerfen, und diegamepadconnected- undgamepaddisconnected-Ereignisse werden nicht ausgelöst. geolocationExperimentell-
Steuert, ob das aktuelle Dokument die
Geolocation-Schnittstelle verwenden darf. Wenn diese Richtlinie deaktiviert ist, führen Aufrufe vongetCurrentPosition()undwatchPosition()dazu, dass die Rückruffunktionen dieser Methoden mit einemGeolocationPositionError-Code vonPERMISSION_DENIEDaufgerufen werden. gyroscopeExperimentell-
Steuert, ob das aktuelle Dokument Informationen über die Ausrichtung des Geräts über die
Gyroscope-Schnittstelle sammeln darf. hidExperimentell-
Steuert, ob das aktuelle Dokument die WebHID API verwenden darf, um sich mit seltenen oder exotischen menschlichen Schnittstellengeräten wie alternativen Tastaturen oder Gamepads zu verbinden.
identity-credentials-getExperimentell-
Steuert, ob das aktuelle Dokument die Federated Credential Management API (FedCM) verwenden darf.
idle-detectionExperimentell-
Steuert, ob das aktuelle Dokument die Idle Detection API verwenden darf, um zu erkennen, wann Nutzer mit ihren Geräten interagieren, um beispielsweise in Chat-Anwendungen den Status "verfügbar"/"abwesend" zu melden.
language-detectorExperimentell-
Steuert den Zugriff auf die Sprachenerkennungsfunktion der Übersetzer- und Sprachenerkennungs-APIs.
local-fontsExperimentell-
Steuert, ob das aktuelle Dokument Daten über die lokal installierten Schriftarten des Nutzers über die
Window.queryLocalFonts()-Methode sammeln darf (siehe auch die Local Font Access API). magnetometerExperimentell-
Steuert, ob das aktuelle Dokument Informationen über die Ausrichtung des Geräts über die
Magnetometer-Schnittstelle sammeln darf. microphoneExperimentell-
Steuert, ob das aktuelle Dokument Audiogeräte verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
MediaDevices.getUserMedia()zurückgegebenePromisemit einemNotAllowedError-DOMExceptionabgelehnt. midiExperimentell-
Steuert, ob das aktuelle Dokument die Web MIDI API verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMIDIAccess()zurückgegebenePromisemit einemSecurityError-DOMExceptionabgelehnt. on-device-speech-recognitionExperimentell-
Steuert den Zugriff auf die Geräteinterne Spracherkennung der Web Speech API.
otp-credentialsExperimentell-
Steuert, ob das aktuelle Dokument die WebOTP API verwenden darf, um ein Einmalkennwort (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 das aktuelle Dokument die Payment Request API verwenden darf. Wenn diese Richtlinie aktiv ist, wird der
PaymentRequest()-Konstruktor einenSecurityError-DOMExceptionwerfen. picture-in-pictureExperimentell-
Steuert, ob das aktuelle Dokument ein Video im Bild-im-Bild-Modus über die entsprechende API abspielen darf.
private-state-token-issuanceExperimentell-
Steuert die Verwendung von
token-request-Operationen des Private State Token. private-state-token-redemptionExperimentell-
Steuert die Verwendung von
token-redemption- undsend-redemption-record-Operationen des Private State Token. publickey-credentials-createExperimentell-
Steuert, ob das aktuelle Dokument die Web Authentication API verwenden darf, um neue asymmetrische Schlüsselanmeldeinformationen zu erstellen, z.B. über
navigator.credentials.create({publicKey: ..., ...}). publickey-credentials-getExperimentell-
Steuert, ob das aktuelle Dokument die Web Authentication API verwenden darf, um bereits gespeicherte öffentliche Schlüsselanmeldeinformationen abzurufen, z.B. über
navigator.credentials.get({publicKey: ..., ...}). screen-wake-lockExperimentell-
Steuert, ob das aktuelle Dokument die Screen Wake Lock API verwenden darf, um zu signalisieren, dass das Gerät den Bildschirm nicht ausschalten oder dimmen soll.
serialExperimentell-
Steuert, ob das aktuelle Dokument die Web Serial API verwenden darf, um mit seriellen Geräten zu kommunizieren, entweder direkt über einen seriellen Port oder über USB- oder Bluetooth-Geräte, die einen seriellen Port emulieren.
speaker-selectionExperimentell-
Steuert, ob das aktuelle Dokument die Audio Output Devices API verwenden darf, um Lautsprecher aufzulisten und auszuwählen.
storage-accessExperimentell-
Steuert, ob einem in einem Drittanbieter-Kontext geladenen Dokument (z.B. in einem
<iframe>eingebettet) die Verwendung der Storage Access API erlaubt ist, um Zugriff auf nicht partitionierte Cookies anzufordern. translatorExperimentell-
Steuert den Zugriff auf die Übersetzungsfunktionalität der Übersetzer- und Sprachenerkennungs-APIs.
summarizerExperimentell-
Steuert den Zugriff auf die Summarizer API.
usbExperimentell-
Steuert, ob das aktuelle Dokument die WebUSB API verwenden darf.
-
Steuert, ob das aktuelle Dokument die
Navigator.share()der Web Share API verwenden darf, um Text, Links, Bilder und andere Inhalte an beliebige Ziele der Wahl des Nutzers zu teilen, z.B. mobile Apps. window-managementExperimentell-
Steuert, ob das aktuelle Dokument die Window Management API verwenden darf, um Fenster auf mehreren Displays zu verwalten.
xr-spatial-trackingExperimentell-
Steuert, ob das aktuelle Dokument die WebXR Device API verwenden darf, um mit einer WebXR-Sitzung zu interagieren.
Beispiele
>Grundlegende Verwendung
Permissions-Policy-Header
Um allen Ursprüngen Zugriff auf Geolokalisierung zu gewähren, würden Sie dies tun:
Permissions-Policy: geolocation=*
Oder um den Zugriff auf eine Teilmenge von Ursprüngen zu erlauben, würden Sie dies tun:
Permissions-Policy: geolocation=(self "https://a.example.com" "https://b.example.com")
Mehrere Features können gleichzeitig gesteuert werden, indem der Header mit einer durch Kommas getrennten Liste von Richtlinien gesendet wird oder indem für jede Richtlinie ein separater Header gesendet wird.
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> ein Feature aktiviert hat, muss sein erlaubter Ursprung auch in der Allowlist für die übergeordnete Seite enthalten sein. Aufgrund dieses Vererbungverhaltens ist es ratsam, im HTTP-Header die breiteste akzeptable Unterstützung für ein Feature anzugeben und dann die Teilmenge der Unterstützung, die Sie für jedes <iframe> benötigen.
Um allen Ursprüngen Zugriff auf Geolokalisierung zu gewähren, würden Sie dies tun:
<iframe src="https://example.com" allow="geolocation *"></iframe>
Um eine Richtlinie auf den aktuellen Ursprung und andere anzuwenden, würden Sie dies tun:
<iframe
src="https://example.com"
allow="geolocation 'self' https://a.example.com https://b.example.com"></iframe>
Dies ist wichtig: Standardmäßig wird eine Richtlinie nicht auf den Ursprung angewendet, zu dem ein <iframe> navigiert, wenn es zu einem anderen Ursprung navigiert. Durch das Auflisten des Ursprungs, zu dem das <iframe> navigiert, im allow-Attribut wird die Permissions-Policy, die auf das ursprüngliche <iframe> angewendet wurde, auf den Ursprung angewendet, zu dem das <iframe> navigiert.
Mehrere Features können gleichzeitig gesteuert werden, indem eine durch Semikolons getrennte Liste von Richtliniendirektiven im allow-Attribut enthalten ist.
<iframe
src="https://example.com"
allow="geolocation 'self' https://a.example.com https://b.example.com; fullscreen 'none'"></iframe>
Der src-Wert verdient eine besondere Erwähnung. Wir haben oben erwähnt, dass die Verwendung dieses Allowlist-Werts bedeutet, dass das zugehörige Feature in diesem <iframe> erlaubt wird, solange das darin geladene Dokument vom gleichen Ursprung wie die URL im src-Attribut stammt. Dieser Wert ist der Standard Allowlist-Wert für Features, die in allow aufgeführt sind, daher sind die folgenden gleichwertig:
<iframe src="https://example.com" allow="geolocation 'src'"></iframe>
<iframe src="https://example.com" allow="geolocation"></iframe>
Verweigern des Zugriffs auf leistungsstarke Funktionen
SecureCorp Inc. möchte die Mikrofon- (zum Beispiel MediaDevices.getUserMedia()) und Geolocation-APIs in seiner Anwendung deaktivieren. Dies kann mit dem folgenden Response-Header erfolgen:
Permissions-Policy: microphone=(), geolocation=()
Durch Angabe von () für die Ursprungs-Liste werden die angegebenen Funktionen für alle Browsing-Kontexte (dies schließt alle <iframe>s ein) unabhängig von ihrem Ursprung deaktiviert.
Kombination von HTTP-Header- und <iframe>-Richtlinien
Angenommen, wir wollten die Nutzung von Geolokalisierung auf unserem eigenen Ursprung und in eingebetteten Inhalten von unserem vertrauenswürdigen Anzeigennetzwerk aktivieren. Wir könnten die seitenweite Permissions-Policy folgendermaßen einrichten:
Permissions-Policy: geolocation=(self https://trusted-ad-network.com)
In unseren Anzeigen-<iframe>s könnten wir den Zugriff auf den https://trusted-ad-network.com-Ursprung folgendermaßen festlegen:
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>
Wenn ein anderer Ursprung in das <iframe> geladen wird, hätte er keinen Zugriff auf Geolokalisierung:
<iframe src="https://rogue-origin-example.com" allow="geolocation"></iframe>
Spezifikationen
| Specification |
|---|
| Permissions Policy> # permissions-policy-http-header-field> |