Permissions API

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die Permissions API bietet eine konsistente programmatische Möglichkeit, den Status der API-Berechtigungen im aktuellen Kontext, wie einer Webseite oder einem Worker, abzufragen. Zum Beispiel kann sie verwendet werden, um festzustellen, ob die Berechtigung zum Zugriff auf eine bestimmte Funktion oder API gewährt, verweigert oder eine spezifische Benutzererlaubnis erforderlich ist.

Konzepte und Nutzung

Historisch gesehen handhaben verschiedene APIs ihre eigenen Berechtigungen unterschiedlich - zum Beispiel stellte die Notifications API eigene Methoden zum Anfordern von Berechtigungen und zum Überprüfen des Berechtigungsstatus bereit, während die Geolocation API dies nicht tat. Die Permissions API bietet die Werkzeuge, damit Entwickler ein konsistentes Benutzererlebnis für den Umgang mit Berechtigungen umsetzen können.

Die Berechtigungen dieser API fassen effektiv alle Sicherheitsbeschränkungen für den Kontext zusammen, einschließlich jeglicher Anforderungen, dass eine API in einem sicheren Kontext verwendet wird, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen an die Benutzerinteraktion und Benutzeranfragen. Wenn zum Beispiel eine API durch die Berechtigungsrichtlinie eingeschränkt ist, würde die zurückgegebene Berechtigung denied lauten, und der Benutzer würde nicht aufgefordert, den Zugriff zu gewähren.

Die permissions-Eigenschaft wurde sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf dem Navigator-Objekt verfügbar gemacht (WorkerNavigator - sodass Berechtigungsabfragen innerhalb von Workern verfügbar sind) und gibt ein Permissions-Objekt zurück, das Zugriff auf die Funktionalität der Permissions API bietet.

Sobald Sie dieses Objekt haben, können Sie die Methode Permissions.query() verwenden, um ein Promise zurückzugeben, das mit dem PermissionStatus für eine spezifische API aufgelöst wird.

Anfordern von Berechtigungen

Wenn der Berechtigungsstatus prompt ist, muss der Benutzer eine Eingabeaufforderung bestätigen, um Zugriff auf die Funktion zu gewähren.

Der Mechanismus, der diese Eingabeaufforderung auslöst, hängt von der spezifischen API ab - er ist nicht Teil der Permissions API definiert. In der Regel wird die Eingabeaufforderung durch Code ausgelöst, der eine Methode aufruft, um die Funktion zuzugreifen oder zu öffnen, oder der sich für Benachrichtigungen von der Funktion registriert, die anschließend darauf zugreifen.

Beachten Sie, dass nicht alle Funktionen eine Eingabeaufforderung erfordern. Berechtigungen könnten durch eine Permission Policy, implizit durch transient activation oder durch einen anderen Mechanismus gewährt werden.

Widerrufen von Berechtigungen

Das Widerrufen von Berechtigungen wird nicht von der API verwaltet. Genauer gesagt wurde eine Methode Permissions.revoke() vorgeschlagen, aber mittlerweile aus den Browsern entfernt, in denen sie implementiert war.

Benutzer können Berechtigungen für bestimmte Seiten manuell über die Browsereinstellungen entfernen:

  • Firefox: Hamburger-Menü > Einstellungen > Datenschutz & Sicherheit > Berechtigungen (dann den Einstellungen-Button für die gewünschte Berechtigung auswählen).
  • Chrome: Hamburger-Menü > Einstellungen > Erweiterte Einstellungen anzeigen. In der Datenschutz-Sektion, klicken Sie auf Inhaltseinstellungen. Im resultierenden Dialogfeld finden Sie den Standort-Abschnitt und wählen Fragen, wenn eine Seite versucht…. Schließlich klicken Sie auf Ausnahmen verwalten und entfernen die Berechtigungen, die Sie den Seiten erteilt haben, die Sie interessieren.

Berechtigungsbewusste APIs

Nicht alle APIs' Berechtigungsstatuse können über die Permissions API abgefragt werden. Eine nicht vollständige Liste berechtigungsbewusster APIs umfasst:

Schnittstellen

Permissions

Bietet die Kernfunktionalität der Permission API, wie Methoden zum Abfragen und Widerrufen von Berechtigungen.

PermissionStatus

Bietet Zugriff auf den aktuellen Status einer Berechtigung und einen Ereignishandler, um auf Änderungen des Berechtigungsstatus zu reagieren.

Erweiterungen zu anderen Schnittstellen

Bietet Zugriff auf das Permissions-Objekt aus dem Hauptkontext bzw. dem Worker-Kontext.

Beispiele

Wir haben ein Beispiel namens Location Finder erstellt. Sie können das Beispiel live ausführen, den Quellcode auf GitHub ansehen oder mehr darüber lesen, wie es funktioniert, in unserem Artikel Using the Permissions API.

Das Beispiel für Permissions.query() zeigt auch Code, der die meisten Berechtigungen im aktuellen Browser testet und das Ergebnis protokolliert.

Spezifikationen

Specification
Permissions

Browser-Kompatibilität

api.Permissions

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Permissions
accelerometer permission
Experimental
accessibility-events permission
DeprecatedNon-standard
ambient-light-sensor permission
Experimental
background-sync permission
Experimental
camera permission
clipboard-read permission
ExperimentalNon-standard
clipboard-write permission
Experimental
compute-pressure permission
Experimental
geolocation permission
gyroscope permission
Experimental
local-fonts permission
Experimental
magnetometer permission
Experimental
microphone permission
midi permission
notifications permission
payment-handler permission
Experimental
persistent-storage permission
push permission
screen-wake-lock permission
storage-access permission
top-level-storage-access permission
Experimental
window-management permission
Experimental
query
request
Experimental
requestAll
ExperimentalNon-standard
revoke
Deprecated

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
Experimental. Expect behavior to change in the future.
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
See implementation notes.
User must explicitly enable this feature.
Has more compatibility info.

api.Navigator.permissions

Report problems with this compatibility data on GitHub
desktopmobileserver
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
Deno
Node.js
permissions

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

api.WorkerNavigator.permissions

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
permissions

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support
See implementation notes.

Siehe auch