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 Antwortheader bietet einen Mechanismus, um die Nutzung von Browserfunktionen in einem Dokument oder innerhalb der im Dokument enthaltenen <iframe>-Elemente zu ermöglichen oder zu verweigern.
Für weitere Informationen siehe den Hauptartikel zur Permissions Policy.
| Headertyp | Antwortheader |
|---|
Syntax
Permissions-Policy: <directive>=<allowlist>
<directive>-
Die Permissions Policy-Direktive, auf die die
allowlistangewendet werden soll. Siehe Direktiven unten für eine Liste der zulässigen Direktivnamen. <allowlist>-
Eine Allowlist ist eine Liste von Ursprüngen, die einen oder mehrere der folgenden in Klammern enthaltenen Werte trennt durch Leerzeichen enthalten:
*(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 obersten 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) im gleichen Ursprung erlaubt. Die Funktion ist in Dokumenten mit fremden Ursprüngen in verschachtelten 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 aus demselben Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert wird nur im<iframe>allow-Attribut verwendet und ist der standardmäßigeAllowlist-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 sein. 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 standardmäßige Allowlist, die immer entweder
*,selfodernonefür denPermissions-Policy-HTTP-Header ist und das standardmäßige Verhalten bestimmt, wenn sie nicht ausdrücklich in einer Richtlinie aufgeführt sind. Diese sind auf den jeweiligen Direktiven-Referenzseiten aufgeführt. Für<iframe>-Allow-Attribute ist das Standardverhalten immersrc.
Wo unterstützt, können Sie Platzhalter in Permissions Policy-Ursprüngen verwenden. Dies bedeutet, dass Sie anstelle von mehreren verschiedenen Subdomains alle in einem einzigen Ursprung mit einem Platzhalter definieren können.
Anstatt von
("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" entspricht nicht "https://example.com".
Direktiven
accelerometerExperimentell-
Steuert, ob das aktuelle Dokument die Informationen über die Beschleunigung des Geräts über die
Accelerometer-Schnittstelle sammeln darf. ambient-light-sensorExperimentell-
Steuert, ob das aktuelle Dokument Informationen über die Lichtmenge in der Umgebung des Geräts über die
AmbientLightSensor-Schnittstelle sammeln darf. aria-notifyExperimentell Nicht standardisiert-
Steuert, ob das aktuelle Dokument die
ariaNotify()-Methode zur Auslösung von Ansagen für Screenreader verwenden kann. attribution-reportingVeraltet-
Steuert, ob das aktuelle Dokument die Nutzung der Attribution Reporting API erlaubt.
autoplayExperimentell-
Steuert, ob das aktuelle Dokument Medien, die über die
HTMLMediaElement-Schnittstelle angefordert werden, automatisch abspielen darf. Wenn diese Richtlinie deaktiviert ist und es keine Benutzerinteraktionen gab, wird das vonHTMLMediaElement.play()zurückgegebenePromisemit einemNotAllowedErrorDOMExceptionabgelehnt. Dasautoplay-Attribut an<audio>- und<video>-Elementen wird ignoriert. bluetoothExperimentell-
Steuert, ob die Nutzung 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 die zurückgegebenenPromisemit einemSecurityErrorDOMExceptionab. browsing-topicsVeraltet Nicht standardisiert-
Steuert den Zugriff auf die Topics API. Wo eine Richtlinie die Nutzung der Topics API ausdrücklich verbietet, schlägt jeder Versuch, die
Document.browsingTopics()-Methode aufzurufen oder eine Anfrage mit einemSec-Browsing-Topics-Header zu senden, mit einemNotAllowedErrorDOMExceptionfehl. cameraExperimentell-
Steuert, ob das aktuelle Dokument Videogeräteeingaben verwenden darf. Das von
getUserMedia()zurückgegebenePromisewird mit einemNotAllowedErrorDOMExceptionabgelehnt, wenn die Erlaubnis nicht erteilt wird. captured-surface-controlExperimentell-
Steuert, ob das Dokument die Captured Surface Control API verwenden darf. Das von den Hauptmethoden der API zurückgegebene Promise wird mit einem
NotAllowedErrorDOMExceptionabgelehnt, wenn die Erlaubnis nicht erteilt wird. compute-pressureExperimentell-
Steuert den Zugriff auf die Compute Pressure API.
cross-origin-isolatedExperimentell-
Steuert, ob das aktuelle Dokument als cross-origin isoliert behandelt werden kann.
deferred-fetchExperimentell-
Kontrolliert die Zuweisung des
fetchLater()Quote des obersten Ursprunges. deferred-fetch-minimalExperimentell-
Kontrolliert die Zuweisung des gemeinsamen Cross-Origin-Subframe
fetchLater()Quote. display-captureExperimentell-
Steuert, ob das aktuelle Dokument die Methode
getDisplayMedia()zur Aufnahme von Bildschirm-Inhalten verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das vongetDisplayMedia()zurückgegebene Promise mit einemNotAllowedErrorDOMExceptionabgelehnt, wenn die Erlaubnis zur Erfassung der Bildschirm-Inhalte nicht erteilt wird. 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 einemSecurityErrorDOMExceptionabgelehnt. 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, lösen Aufrufe von
Navigator.getGamepads()einenSecurityErrorDOMExceptionaus, und die Ereignissegamepadconnectedundgamepaddisconnectedwerden 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 einemGeolocationPositionErrormit dem CodePERMISSION_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 ungewöhnlichen oder exotischen Mensch-Computer-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 Benutzer mit ihren Geräten interagieren, beispielsweise um in Chat-Anwendungen den Status "verfügbar"/"abwesend" zu melden.
language-detectorExperimentell-
Steuert den Zugriff auf die Spracherkennungsfunktionalität der Translator and Language Detector APIs.
local-fontsExperimentell-
Steuert, ob das aktuelle Dokument Daten über die lokal installierten Schriften des Benutzers über die Methode
Window.queryLocalFonts()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 Audio-Eingabegeräte verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
MediaDevices.getUserMedia()zurückgegebenePromisemit einemNotAllowedErrorDOMExceptionabgelehnt. midiExperimentell-
Steuert, ob das aktuelle Dokument die Web MIDI API verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMIDIAccess()zurückgegebenePromisemit einemSecurityErrorDOMExceptionabgelehnt. on-device-speech-recognitionExperimentell-
Steuert den Zugriff auf die Spracherkennung auf dem Gerät Funktionalität der Web Speech API.
otp-credentialsExperimentell-
Steuert, ob das aktuelle Dokument die WebOTP API verwenden darf, um ein Einmalpasswort (OTP) aus einer speziell formatierten SMS-Nachricht anzufordern, die vom Server der App gesendet wurde, z. B. über
navigator.credentials.get({otp: ..., ...}). paymentExperimentell-
Steuert, ob das aktuelle Dokument die Payment Request API verwenden darf. Wenn diese Richtlinie aktiviert ist, löst der
PaymentRequest()Konstruktor einenSecurityErrorDOMExceptionaus. picture-in-pictureExperimentell-
Steuert, ob das aktuelle Dokument ein Video im Picture-in-Picture-Modus über die entsprechende API abspielen darf.
private-state-token-issuanceExperimentell-
Steuert die Nutzung von private state token
token-requestOperationen. private-state-token-redemptionExperimentell-
Steuert die Nutzung von private state token
token-redemptionundsend-redemption-recordOperationen. publickey-credentials-createExperimentell-
Steuert, ob das aktuelle Dokument die Web Authentication API verwenden darf, um neue asymmetrische Schlüssel-Credentials 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üssel-Credentials abzurufen, z. B. über
navigator.credentials.get({publicKey: ..., ...}). screen-wake-lockExperimentell-
Steuert, ob das aktuelle Dokument die Screen Wake Lock API verwenden darf, um anzugeben, 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 Anschluss oder über USB- oder Bluetooth-Geräte, die einen seriellen Anschluss 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 ein in einem Drittanbieter-Kontext geladenes Dokument (d.h. eingebettet in einem
<iframe>) die Storage Access API verwenden darf, um Zugriff auf nicht partitionierte Cookies anzufordern. 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 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 zu beliebigen Zielen zu teilen, die die Benutzer ausgewählt haben, z. B. mobile Apps. window-managementExperimentell-
Steuert, ob das aktuelle Dokument die Window Management API verwenden darf, um Fenster auf mehreren Bildschirmen 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 die Geolokalisierung zu gewähren, könnten Sie dies tun:
Permissions-Policy: geolocation=*
Oder um den Zugriff auf eine Teilmenge von Ursprüngen zu gewähren, könnten Sie dies tun:
Permissions-Policy: geolocation=(self "https://a.example.com" "https://b.example.com")
Mehrere Funktionen können gleichzeitig gesteuert werden, indem der Header mit einer komma-getrennten Liste von Richtlinien oder durch Senden eines separaten Headers für jede Richtlinie gesendet wird.
Zum Beispiel sind die folgenden äquivalent:
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 auch der erlaubte Ursprung in der Allowlist für die übergeordnete Seite stehen. Aufgrund dieses Vererbungsverhaltens ist es eine gute Idee, den breitesten akzeptablen Support für eine Funktion im HTTP-Header anzugeben und dann die Teilmenge des Supports, die Sie in jedem <iframe> benötigen, festzulegen.
Um allen Ursprüngen Zugriff auf die Geolokalisierung zu gewähren, könnten Sie dies tun:
<iframe src="https://example.com" allow="geolocation *"></iframe>
Um eine Richtlinie auf den aktuellen Ursprung und andere anzuwenden, könnten 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 die Richtlinie, wenn ein <iframe> zu einem anderen Ursprung navigiert, nicht auf den Ursprung angewendet, zu dem das <iframe> navigiert. Indem Sie den Ursprungsort, zu dem das <iframe> navigiert, im allow-Attribut aufführen, wird die Permissions Policy, die auf das ursprüngliche <iframe> angewendet wurde, auf den Ursprung angewendet, zu dem das <iframe> navigiert.
Mehrere Funktionen können gleichzeitig gesteuert werden, indem eine durch Semikolon 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>
Es lohnt sich, dem src-Wert eine besondere Erwähnung zu geben. Wir haben oben erwähnt, dass die Verwendung dieses Allowlist-Wertes bedeutet, dass die zugehörige Funktion in diesem <iframe> erlaubt wird, solange das darin geladene Dokument aus dem gleichen Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert ist der standardmäßige Allowlist-Wert für die in allow aufgeführten Funktionen, daher sind die folgenden äquivalent:
<iframe src="https://example.com" allow="geolocation 'src'"></iframe>
<iframe src="https://example.com" allow="geolocation"></iframe>
Zugriff auf leistungsstarke Funktionen verweigern
SecureCorp Inc. möchte die Mikrofon- (zum Beispiel MediaDevices.getUserMedia()) und Geolokalisierungs-APIs in seiner Anwendung deaktivieren. Sie können dies mit dem folgenden Antwortheader tun:
Permissions-Policy: microphone=(), geolocation=()
Indem () als Ursprungsliste angegeben wird, 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 möchten die Nutzung von Geolokalisierung auf unserem eigenen Ursprung und in eingebetteten Inhalten aus unserem vertrauenswürdigen Werbenetzwerk aktivieren. Wir könnten die seitenweite Permissions Policy folgendermaßen einrichten:
Permissions-Policy: geolocation=(self https://trusted-ad-network.com)
In unseren Werbe-<iframe>s könnten wir den Zugriff für den Ursprung https://trusted-ad-network.com folgendermaßen einrichten:
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>
Wenn ein anderer Ursprung im <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> |