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 Verwendung 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
allowlist
angewendet wird. 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 in Klammern enthält, getrennt durch Leerzeichen:
*
(Wildcard)-
Die Funktion wird in diesem Dokument sowie 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>
-Attributeallow
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 Dokumenten mit anderem Ursprung in den verschachtelten Browsing-Kontexten nicht erlaubt.self
kann als Kurzform fürhttps://your-site.example.com
betrachtet werden. Das Äquivalent für<iframe>
-Attributeallow
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>
-Attributallow
verwendet und ist der Standardallowlist
-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>
-Attributenallow
nicht in Anführungszeichen stehen.
Die Werte
*
und()
dürfen nur allein verwendet werden, währendself
undsrc
in Kombination mit einem oder mehreren Ursprüngen verwendet werden können.Hinweis: Direktiven haben eine Standard-Allowlist, die immer eines von
*
,self
odernone
für den HTTP-HeaderPermissions-Policy
ist und das Standardverhalten steuert, wenn sie nicht explizit in einer Richtlinie aufgeführt sind. Diese sind auf den individuellen Direktivreferenzseiten spezifiziert. Für<iframe>
-Attributeallow
ist das Standardverhalten immersrc
.
Wo unterstützt, können Sie Wildcards in Permissions-Policy-Ursprüngen einfügen. Das bedeutet, dass Sie anstelle mehrerer verschiedener Subdomains in einer Allowlist diese alle in einem einzigen Ursprung mit einem Wildcard angeben können.
Anstatt
("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
accelerometer
Experimentell-
Steuert, ob das aktuelle Dokument durch die
Accelerometer
-Schnittstelle Informationen über die Beschleunigung des Geräts sammeln darf. ambient-light-sensor
Experimentell-
Steuert, ob das aktuelle Dokument durch die
AmbientLightSensor
-Schnittstelle Informationen über die Lichtmenge in der Umgebung des Geräts sammeln darf. attribution-reporting
Experimentell-
Steuert, ob das aktuelle Dokument die Attribution Reporting API verwenden kann.
autoplay
Experimentell-
Steuert, ob das aktuelle Dokument Medien über die
HTMLMediaElement
-Schnittstelle automatisch abspielen darf. Wenn diese Richtlinie deaktiviert ist und es keine Benutzeraktionen gab, wird der vonHTMLMediaElement.play()
zurückgegebenePromise
mit einemNotAllowedError
-DOMException
abgelehnt. Das autoplay-Attribut bei<audio>
- und<video>
-Elementen 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 vonNavigator.bluetooth
zurückgegeben wird, entwederfalse
zurück oder lehnen das zurückgegebenePromise
mit einemSecurityError
-DOMException
ab. browsing-topics
Experimentell Nicht standardisiert-
Steuert den Zugriff auf die Topics API. Wo eine Richtlinie die Nutzung der Topics API speziell verbietet, schlagen alle Versuche, die
Document.browsingTopics()
-Methode aufzurufen oder eine Anfrage mit einemSec-Browsing-Topics
-Header zu senden, mit einemNotAllowedError
-DOMException
fehl. camera
Experimentell-
Steuert, ob das aktuelle Dokument Videogeräte verwenden darf. Der von
getUserMedia()
zurückgegebenePromise
wird mit einemNotAllowedError
-DOMException
abgelehnt, wenn die Berechtigung nicht erlaubt ist. captured-surface-control
Experimentell-
Steuert, ob das Dokument die Captured Surface Control API verwenden darf. Der von den Hauptmethoden der API zurückgegebene Promise wird mit einem
NotAllowedError
-DOMException
abgelehnt, wenn die Berechtigung nicht erlaubt ist. compute-pressure
Experimentell-
Steuert den Zugriff auf die Compute Pressure API.
cross-origin-isolated
Experimentell-
Steuert, ob das aktuelle Dokument als cross-origin isolated behandelt werden kann.
deferred-fetch
Experimentell-
Steuert die Zuweisung des
fetchLater()
quota des Top-Level-Ursprungs. deferred-fetch-minimal
Experimentell-
Steuert die Zuweisung des shared cross-origin subframe
fetchLater()
quota. display-capture
Experimentell-
Steuert, ob das aktuelle Dokument die
getDisplayMedia()
-Methode verwenden darf, um Bildschirminhalte aufzuzeichnen. Wenn diese Richtlinie deaktiviert ist, wird der vongetDisplayMedia()
zurückgegebene Promise mit einemNotAllowedError
-DOMException
abgelehnt, wenn die Berechtigung zum Aufzeichnen der Anzeigeinhalte nicht erteilt wird. encrypted-media
Experimentell-
Steuert, ob das aktuelle Dokument die Encrypted Media Extensions API (EME) verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird der von
Navigator.requestMediaKeySystemAccess()
zurückgegebenePromise
mit einemSecurityError
-DOMException
abgelehnt. fullscreen
Experimentell-
Steuert, ob das aktuelle Dokument
Element.requestFullscreen()
verwenden darf. Wenn diese Richtlinie deaktiviert ist, lehnt der zurückgegebenePromise
mit einemTypeError
ab. gamepad
Experimentell-
Steuert, ob das aktuelle Dokument die Gamepad API verwenden darf. Wenn diese Richtlinie deaktiviert ist, werden Aufrufe von
Navigator.getGamepads()
einenSecurityError
-DOMException
auslösen, und diegamepadconnected
undgamepaddisconnected
-Ereignisse werden nicht ausgelöst. geolocation
Experimentell-
Steuert, ob das aktuelle Dokument die
Geolocation
-Schnittstelle verwenden darf. Wenn diese Richtlinie deaktiviert ist, werden Aufrufe vongetCurrentPosition()
undwatchPosition()
dazu führen, dass die Rückruf-Funktionen dieser Funktionen mit einemGeolocationPositionError
code vonPERMISSION_DENIED
aufgerufen werden. gyroscope
Experimentell-
Steuert, ob das aktuelle Dokument durch die
Gyroscope
-Schnittstelle Informationen über die Orientierung des Geräts sammeln darf. hid
Experimentell-
Steuert, ob das aktuelle Dokument die WebHID API verwenden darf, um sich mit ungewöhnlichen oder exotischen Mensch-Maschine-Schnittstellengeräten wie alternativen Tastaturen oder Gamepads zu verbinden.
identity-credentials-get
Experimentell-
Steuert, ob das aktuelle Dokument die Federated Credential Management API (FedCM) verwenden darf.
idle-detection
Experimentell-
Steuert, ob das aktuelle Dokument die Idle Detection API verwenden darf, um zu erkennen, wann Benutzer mit ihren Geräten interagieren, zum Beispiel um "verfügbar"/"abwesend"-Status 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 Daten zu den lokal installierten Schriften des Benutzers über die
Window.queryLocalFonts()
-Methode sammeln darf (siehe auch die Local Font Access API). magnetometer
Experimentell-
Steuert, ob das aktuelle Dokument durch die
Magnetometer
-Schnittstelle Informationen über die Orientierung des Geräts sammeln darf. microphone
Experimentell-
Steuert, ob das aktuelle Dokument Audiogeräte verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird der von
MediaDevices.getUserMedia()
zurückgegebenePromise
mit einemNotAllowedError
-DOMException
abgelehnt. midi
Experimentell-
Steuert, ob das aktuelle Dokument die Web MIDI API verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird der von
Navigator.requestMIDIAccess()
zurückgegebenePromise
mit einemSecurityError
-DOMException
abgelehnt. otp-credentials
Experimentell-
Steuert, ob das aktuelle Dokument die WebOTP API verwenden darf, um ein einmaliges Passwort (OTP) von einer speziell formatierten SMS-Nachricht anzufordern, die vom Server der App gesendet wird, d.h. über
navigator.credentials.get({otp: ..., ...})
. payment
Experimentell-
Steuert, ob das aktuelle Dokument die Payment Request API verwenden darf. Wenn diese Richtlinie aktiviert ist, wird der
PaymentRequest()
-Konstruktor einenSecurityError
-DOMException
auslösen. picture-in-picture
Experimentell-
Steuert, ob das aktuelle Dokument das Bild-im-Bild-Modus über die entsprechende API verwenden darf, um ein Video abzuspielen.
publickey-credentials-create
Experimentell-
Steuert, ob das aktuelle Dokument die Web Authentication API verwenden darf, um neue asymmetrische Schlüsselanmeldeinformationen zu erstellen, d.h. über
navigator.credentials.create({publicKey: ..., ...})
. publickey-credentials-get
Experimentell-
Steuert, ob das aktuelle Dokument die Web Authentication API verwenden darf, um bereits gespeicherte öffentliche Schlüsselanmeldeinformationen abzurufen, d.h. über
navigator.credentials.get({publicKey: ..., ...})
. screen-wake-lock
Experimentell-
Steuert, ob das aktuelle Dokument die Screen Wake Lock API verwenden darf, um anzuzeigen, dass das Gerät den Bildschirm nicht ausschalten oder dimmen soll.
serial
Experimentell-
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-selection
Experimentell-
Steuert, ob das aktuelle Dokument die Audio Output Devices API verwenden darf, um Lautsprecher aufzulisten und auszuwählen.
storage-access
Experimentell-
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. 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 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 Benutzers zu teilen, z.B. mobile Apps. window-management
Experimentell-
Steuert, ob das aktuelle Dokument die Window Management API verwenden darf, um Fenster auf mehreren Displays zu verwalten.
xr-spatial-tracking
Experimentell-
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 den Zugriff auf die Geolokalisierung zu erlauben, 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 Funktionen können gleichzeitig gesteuert werden, indem der Header mit einer durch Kommas getrennten Liste von Richtlinien gesendet wird, oder indem ein separater Header 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 enthalten sein. Aufgrund dieses Vererbungverhaltens ist es eine gute Idee, die breiteste akzeptable Unterstützung einer Funktion im HTTP-Header anzugeben und dann die Untermenge der Unterstützung, die Sie in jedem <iframe>
benötigen, festzulegen.
Um allen Ursprüngen den Zugriff auf die Geolokalisierung zu erlauben, würden Sie dies tun:
<iframe src="https://example.com" allow="geolocation *"></iframe>
Um eine Richtlinie für 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, wenn ein <iframe>
zu einem anderen Ursprung navigiert, wird die Richtlinie nicht auf den Ursprung angewendet, zu dem das <iframe>
navigiert. Durch Auflisten des Ursprungs, zu dem das <iframe>
navigiert, im allow
-Attribut, wird die Permissions-Policy, die auf das ursprüngliche <iframe>
angewendet wurde, auch auf den Ursprung angewendet, zu dem das <iframe>
navigiert.
Mehrere Funktionen 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>
Es lohnt sich, den src
-Wert besonders zu erwähnen. 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 vom selben Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert ist der Standard allowlist
-Wert für Funktionen, die in allow
aufgeführt sind, sodass die folgenden äquivalent sind:
<iframe src="https://example.com" allow="geolocation 'src'">
<iframe src="https://example.com" allow="geolocation"></iframe
></iframe>
Verweigerung des Zugriffs auf leistungsstarke Funktionen
SecureCorp Inc. möchte die Mikrofon- (z.B. MediaDevices.getUserMedia()
) und Geolocation
-APIs in seiner Anwendung deaktivieren. Es kann dies mit dem folgenden Antwort-Header tun:
Permissions-Policy: microphone=(), geolocation=()
Durch Angabe von ()
für die Ursprungsliste 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 zum Beispiel an, wir möchten die Nutzung der Geolokalisierung auf unserem eigenen Ursprung und in eingebetteten Inhalten unseres vertrauenswürdigen Werbenetzwerks 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 auf den Ursprung https://trusted-ad-network.com
folgendermaßen festlegen:
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>
Wenn ein anderer Ursprung in das <iframe>
geladen werden würde, 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 |