Permissions-Policy
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 Browserfunktionen in einem Dokument oder innerhalb von <iframe>
-Elementen im Dokument zu erlauben oder zu verweigern.
Für weitere Informationen siehe den Hauptartikel zur Berechtigungsrichtlinie.
Header-Typ | Antwort-Header |
---|---|
Verbotener Anfrage-Header | ja |
Syntax
Permissions-Policy: <directive>=<allowlist>
<directive>
-
Die Permissions Policy Richtlinie, auf die die
Allowlist
angewandt wird. Siehe unten Richtlinien für eine Liste der erlaubten Richtliniennamen. <allowlist>
-
Eine Allowlist ist eine Liste von Ursprüngen, die einen oder mehrere der folgenden Werte enthält, eingeklammert und durch Leerzeichen getrennt:
*
(Wildcard)-
Die Funktion wird in diesem Dokument und in allen eingebetteten Browsing-Kontexten (
<iframe>
s) unabhängig von deren Ursprung erlaubt. ()
(leere Allowlist)-
Die Funktion ist in obersten und eingebetteten Browsing-Kontexten deaktiviert. Das Äquivalent für
<iframe>
-Attributeallow
ist'none'
. self
-
Die Funktion wird in diesem Dokument und in allen eingebetteten Browsing-Kontexten (
<iframe>
s) im selben Ursprung erlaubt. Die Funktion ist in fremden Ursprüngen in eingebetteten Browsing-Kontexten nicht erlaubt.self
kann als Kurzform fürhttps://Ihr-seite.beispiel.com
betrachtet werden. Das Äquivalent für<iframe>
-Attributeallow
istself
. src
-
Die Funktion wird in diesem
<iframe>
erlaubt, solange das darin geladene Dokument aus demselben Ursprung wie die URL in ihrem 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.beispiel.com"
). Ursprünge sollten durch Leerzeichen getrennt werden. Beachten Sie, dass Ursprünge in<iframe>
-Attributesallow
nicht in Anführungszeichen gesetzt sind.
Die Werte
*
und()
dürfen nur allein verwendet werden, währendself
undsrc
in Kombination mit einem oder mehreren Ursprüngen verwendet werden dürfen.Hinweis: Richtlinien haben eine Standard-
Allowlist
, die immer eine von*
,self
odernone
für denPermissions-Policy
HTTP-Header ist und das Standardverhalten bestimmt, wenn sie nicht explizit in einer Richtlinie aufgeführt sind. Diese sind auf den einzelnen Richtlinien-Referenzseiten angegeben. Für<iframe>
-Attributeallow
ist das Standardverhalten immersrc
.
Wo unterstützt, können Sie Platzhalter in Permissions Policy Ursprüngen einfügen. Dies bedeutet, dass Sie, anstatt verschiedene Subdomains explizit in einer Allowlist anzugeben, alle in einem einzigen Ursprung mit einem Platzhalter angeben können.
Anstatt also
("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"
.
Richtlinien
accelerometer
Experimentell-
Kontrolliert, ob das aktuelle Dokument Informationen über die Beschleunigung des Geräts durch die
Accelerometer
-Schnittstelle sammeln darf. ambient-light-sensor
Experimentell-
Kontrolliert, ob das aktuelle Dokument Informationen über die Lichtmenge in der Umgebung des Geräts durch die
AmbientLightSensor
-Schnittstelle sammeln darf. attribution-reporting
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Attribution Reporting API verwenden darf.
autoplay
Experimentell-
Kontrolliert, ob das aktuelle Dokument Medien automatisch abspielen darf, die durch die
HTMLMediaElement
-Schnittstelle angefordert werden. Wenn diese Richtlinie deaktiviert ist und es keine Benutzeraktionen gab, lehnt das vonHTMLMediaElement.play()
zurückgegebenePromise
mit einemNotAllowedError
DOMException
ab. Dasautoplay
-Attribut auf<audio>
und<video>
-Elementen wird ignoriert. bluetooth
Experimentell-
Kontrolliert, ob die Nutzung der Web Bluetooth API erlaubt ist. Wenn diese Richtlinie deaktiviert ist, geben die Methoden des von
Navigator.bluetooth
zurückgegebenenBluetooth
-Objekts entwederfalse
zurück oder lehnen das zurückgegebenePromise
mit einemSecurityError
DOMException
ab. browsing-topics
Experimentell Nicht standardisiert-
Kontrolliert den Zugriff auf die Topics API. Wo eine Richtlinie die Nutzung der Topics API ausdrücklich verbietet, wird jeder Versuch, die
Document.browsingTopics()
-Methode aufzurufen oder eine Anfrage mit einemSec-Browsing-Topics
-Header zu senden, mit einemNotAllowedError
DOMException
fehlschlagen. camera
Experimentell-
Kontrolliert, ob das aktuelle Dokument Videogeräte verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
getUserMedia()
zurückgegebenePromise
mit einemNotAllowedError
DOMException
abgelehnt. compute-pressure
Experimentell-
Kontrolliert den Zugriff auf die Compute Pressure API.
cross-origin-isolated
Experimentell-
Kontrolliert, ob das aktuelle Dokument als Cross-Origin-Isolated behandelt werden kann.
deferred-fetch
Experimentell-
Kontrolliert die Zuweisung des
fetchLater()
-Kontingents des obersten Ursprungs. deferred-fetch-minimal
Experimentell-
Kontrolliert die Zuweisung des geteilten Cross-Origin-Unterrahmen-
fetchLater()
-Kontingents](/de/docs/Web/API/fetchLater_API/fetchLater_quotas). display-capture
Experimentell-
Kontrolliert, ob das aktuelle Dokument die
getDisplayMedia()
-Methode verwenden darf, um Bildschirminhalte zu erfassen. Wenn diese Richtlinie deaktiviert ist, wird das vongetDisplayMedia()
zurückgegebene Versprechen mit einemNotAllowedError
DOMException
abgelehnt, wenn keine Erlaubnis zur Erfassung der Bildschirm-Inhalte erteilt wird. document-domain
Experimentell-
Kontrolliert, ob das aktuelle Dokument
document.domain
setzen darf. Wenn diese Richtlinie deaktiviert ist, wird der Versuch,document.domain
zu setzen, scheitern und einenSecurityError
DOMException
auslösen. encrypted-media
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Encrypted Media Extensions API (EME) verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMediaKeySystemAccess()
zurückgegebenePromise
mit einemSecurityError
DOMException
abgelehnt. fullscreen
Experimentell-
Kontrolliert, ob das aktuelle Dokument
Element.requestFullscreen()
verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das zurückgegebenePromise
mit einemTypeError
abgelehnt. gamepad
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Gamepad API verwenden darf. Wenn diese Richtlinie deaktiviert ist, werden Aufrufe von
Navigator.getGamepads()
einenSecurityError
DOMException
auslösen, und die Ereignissegamepadconnected
undgamepaddisconnected
werden nicht ausgelöst. geolocation
Experimentell-
Kontrolliert, ob das aktuelle Dokument die
Geolocation
-Schnittstelle verwenden darf. Wenn diese Richtlinie deaktiviert ist, führen Aufrufe vongetCurrentPosition()
undwatchPosition()
dazu, dass die Rückrufe dieser Funktionen mit einemGeolocationPositionError
der CodePERMISSION_DENIED
aufgerufen werden. gyroscope
Experimentell-
Kontrolliert, ob das aktuelle Dokument Informationen über die Ausrichtung des Geräts durch die
Gyroscope
-Schnittstelle sammeln darf. hid
Experimentell-
Kontrolliert, ob das aktuelle Dokument die WebHID API verwenden darf, um sich mit ungewöhnlichen oder exotischen menschlichen Schnittstellengeräten wie alternativen Tastaturen oder Gamepads zu verbinden.
identity-credentials-get
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Federated Credential Management API (FedCM) verwenden darf und insbesondere die Methode
navigator.credentials.get()
mit eineridentity
-Option. Wo diese Richtlinie die Nutzung der API verbietet, wird das von demget()
-Aufruf zurückgegebenePromise
mit einemNotAllowedError
DOMException
abgelehnt. idle-detection
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Idle Detection API verwenden darf, um zu erkennen, wann Benutzer mit ihren Geräten interagieren, beispielsweise um in Chat-Apps den Status "verfügbar"/"abwesend" zu melden.
local-fonts
Experimentell-
Kontrolliert, ob das aktuelle Dokument Informationen über die lokal installierten Schriften des Benutzers über die Methode
Window.queryLocalFonts()
sammeln darf (siehe auch die API für den Zugriff auf lokale Schriftarten). magnetometer
Experimentell-
Kontrolliert, ob das aktuelle Dokument Informationen über die Ausrichtung des Geräts durch die
Magnetometer
-Schnittstelle sammeln darf. microphone
Experimentell-
Kontrolliert, ob das aktuelle Dokument Audiogeräte verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
MediaDevices.getUserMedia()
zurückgegebenePromise
mit einemNotAllowedError
DOMException
abgelehnt. midi
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Web MIDI API verwenden darf. Wenn diese Richtlinie deaktiviert ist, wird das von
Navigator.requestMIDIAccess()
zurückgegebenePromise
mit einemSecurityError
DOMException
abgelehnt. otp-credentials
Experimentell-
Kontrolliert, 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 wird, d.h. über
navigator.credentials.get({otp: ..., ...})
. payment
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Payment Request API verwenden darf. Wenn diese Richtlinie aktiviert ist, wird der Konstruktor
PaymentRequest()
einenSecurityError
DOMException
auslösen. picture-in-picture
Experimentell-
Kontrolliert, ob das aktuelle Dokument erlaubt ist, ein Video im Bild-in-Bild-Modus über die entsprechende API abzuspielen.
publickey-credentials-create
Experimentell-
Kontrolliert, 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-
Kontrolliert, 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-
Kontrolliert, ob das aktuelle Dokument die Screen Wake Lock API verwenden darf, um anzugeben, dass das Gerät den Bildschirm nicht ausschalten oder dimmen soll.
serial
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Web Serial API verwenden darf, um mit seriellen Geräten zu kommunizieren, die entweder direkt über einen seriellen Anschluss oder über USB- oder Bluetooth-Geräte emuliert werden.
speaker-selection
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Audio Output Devices API verwenden darf, um Lautsprecher aufzulisten und auszuwählen.
storage-access
Experimentell-
Kontrolliert, 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. usb
Experimentell-
Kontrolliert, ob das aktuelle Dokument die WebUSB API verwenden darf.
-
Kontrolliert, ob das aktuelle Dokument die
Navigator.share()
der Web Share API verwenden darf, um Text, Links, Bilder und andere Inhalte an beliebige vom Benutzer gewählte Ziele zu teilen, z.B. mobile Apps. window-management
Experimentell-
Kontrolliert, ob das aktuelle Dokument die Window Management API verwenden darf, um Fenster auf mehreren Bildschirmen zu verwalten.
xr-spatial-tracking
Experimentell-
Kontrolliert, 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 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 Sie den Header mit einer kommagetrennten Liste von Richtlinien senden oder indem Sie für jede Richtlinie einen separaten Header senden.
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 der erlaubte Ursprung auch in der Allowlist für die übergeordnete Seite enthalten sein. Aufgrund dieses Vererbung-Verhaltens ist es eine gute Idee, die weiteste akzeptable Unterstützung für eine Funktion im HTTP-Header anzugeben und dann die für jedes <iframe>
benötigte Unterstützung anzugeben.
Um allen Ursprüngen Zugriff auf die 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, wenn ein <iframe>
zu einem anderen Ursprung navigiert, die Richtlinie nicht auf den Ursprung angewendet, zu dem das <iframe>
navigiert. Indem Sie den Ursprung, zu dem das <iframe>
navigiert, im allow
-Attribut auflisten, 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 eingefügt 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 zu erwähnen. Wir haben oben erwähnt, dass die Verwendung dieses Allowlist-Werts bedeutet, dass die zugehörige Funktion in diesem <iframe>
erlaubt wird, solange das darin geladene Dokument aus demselben Ursprung wie die URL in seinem src-Attribut stammt. Dieser Wert ist der Standard Allowlist
-Wert für im allow
-Attribut aufgeführte Funktionen, sodass die folgenden gleichwertig sind:
<iframe src="https://example.com" allow="geolocation 'src'">
<iframe src="https://example.com" allow="geolocation"></iframe
></iframe>
Zugriff auf leistungsstarke Funktionen verweigern
SecureCorp Inc. möchte die Mikrofon- und Geolokalisierung
-APIs in seiner Anwendung deaktivieren (zum Beispiel MediaDevices.getUserMedia()
). Es kann dies mit dem folgenden Antwort-Header tun:
Permissions-Policy: microphone=(), geolocation=()
Indem Sie ()
für die Ursprungs-Liste angeben, werden die angegebenen Funktionen für alle Browsing-Kontexte deaktiviert (dazu gehören alle <iframe>
s), unabhängig von ihrem Ursprung.
Kombination von HTTP-Header und <iframe>
-Richtlinien
Zum Beispiel nehmen wir an, dass wir die Verwendung von Geolokalisierung auf unserem eigenen Ursprung und in eingebetteten Inhalten, die von unserem vertrauenswürdigen Werbenetzwerk stammen, ermöglichen wollten. Wir könnten die seitenweite Permissions Policy so 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
so festlegen:
<iframe src="https://trusted-ad-network.com" allow="geolocation"></iframe>
Wenn ein anderer Ursprung in <iframe>
geladen 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 |