Permissions API
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2022.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Permissions API bietet eine konsistente programmgesteuerte Methode, um den Status von API-Berechtigungen für den aktuellen Kontext abzufragen, wie z.B. eine Webseite oder einen Worker. Zum Beispiel kann sie verwendet werden, um festzustellen, ob die Berechtigung für den Zugriff auf eine bestimmte Funktion oder API erteilt, verweigert oder spezifische Benutzerberechtigung erforderlich ist.
Konzepte und Verwendung
Historisch haben verschiedene APIs ihre Berechtigungen inkonsistent gehandhabt — zum Beispiel stellte die Notifications API eigene Methoden zum Anfordern von Berechtigungen und Überprüfen des Berechtigungsstatus bereit, während die Geolocation API dies nicht tat. Die Permissions API bietet Entwicklern die Werkzeuge, um eine konsistente Benutzererfahrung bei der Arbeit mit Berechtigungen umzusetzen.
Die Berechtigungen dieser API bündeln effektiv alle Sicherheitsbeschränkungen für den Kontext, einschließlich jeglicher Anforderung, dass eine API in einem sicheren Kontext verwendet wird, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen für Benutzerinteraktion und Benutzeraufforderungen.
Wenn eine API z.B. durch eine Berechtigungsrichtlinie eingeschränkt ist, würde die zurückgegebene Berechtigung denied sein und der Benutzer würde nicht aufgefordert werden, Zugriff zu gewähren.
Die permissions-Eigenschaft ist sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf dem Navigator-Objekt verfügbar (WorkerNavigator — sodass Berechtigungsüberprüfungen innerhalb von Workern möglich sind) und liefert ein Permissions-Objekt, 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 Versprechen zurückzugeben, das mit dem PermissionStatus für eine bestimmte API aufgelöst wird.
Anfordern von Berechtigungen
Wenn der Berechtigungsstatus prompt lautet, muss der Benutzer eine Aufforderung bestätigen, um Zugriff auf die Funktion zu gewähren.
Der Mechanismus, der diese Aufforderung auslöst, hängt von der spezifischen API ab — er ist nicht als Teil der Permissions API definiert. Im Allgemeinen ist der Auslöser Code, der eine Methode aufruft, um die Funktion zu verwenden oder zu öffnen, oder der sich für Benachrichtigungen von der Funktion registriert, die anschließend darauf zugreifen wird.
Beachten Sie, dass nicht alle Funktionen eine Aufforderung erfordern.
Berechtigungen könnten durch eine Permission Policy, implizit durch transiente Aktivierung oder durch einen anderen Mechanismus erteilt werden.
Widerruf von Berechtigungen
Der Widerruf von Berechtigungen wird nicht von der API verwaltet.
Genauer gesagt, eine Methode Permissions.revoke() wurde vorgeschlagen, aber seitdem aus den Browsern, in denen sie implementiert war, entfernt.
Benutzer können Berechtigungen für bestimmte Sites manuell über die Browsereinstellungen entfernen:
- Firefox: Hamburger-Menü > Einstellungen > Datenschutz & Sicherheit > Berechtigungen (dann die Einstellungen-Schaltfläche für die gewünschte Berechtigung auswählen).
- Chrome: Hamburger-Menü > Einstellungen > Erweiterte Einstellungen anzeigen. Im Abschnitt Datenschutz klicken Sie auf Inhaltseinstellungen. Im erscheinenden Dialogfeld suchen Sie den Abschnitt Standort und wählen Fragen, wenn eine Website versucht, …. Schließlich klicken Sie auf Ausnahmen verwalten und entfernen die Berechtigungen, die Sie den interessierten Sites gewährt haben.
Berechtigungsbewusste APIs
Nicht der Berechtigungsstatus aller APIs kann über die Permissions API abgefragt werden. Eine unvollständige Liste von berechtigungsbewussten APIs umfasst:
- Background Synchronization API:
background-sync(sollte immer gewährt sein) - Clipboard API:
clipboard-read,clipboard-write - Compute Pressure API:
compute-pressure - Geolocation API:
geolocation - Local Font Access API:
local-fonts - Media Capture and Streams API:
microphone,camera - Notifications API:
notifications - Web-based Payment Handler API:
payment-handler - Push API:
push - Screen Capture API:
captured-surface-control,display-capture - Screen Wake Lock API:
screen-wake-lock - Sensor APIs:
accelerometer,gyroscope,magnetometer,ambient-light-sensor - Storage Access API:
storage-access,top-level-storage-access - Storage API:
persistent-storage - Web Bluetooth API:
bluetooth - Web MIDI API:
midi - Window Management API:
window-management
Schnittstellen
Permissions-
Bietet die grundlegende Funktionalität der Permission API, wie z.B. Methoden zur Abfrage und zum Widerruf von Berechtigungen.
PermissionStatus-
Ermöglicht den Zugriff auf den aktuellen Status einer Berechtigung und einen Ereignishandler, um auf Änderungen im Berechtigungsstatus zu reagieren.
Erweiterungen zu anderen Schnittstellen
-
Bietet Zugriff auf das
Permissions-Objekt aus dem Hauptkontext und dem Worker-Kontext.
Beispiele
Wir haben ein Beispiel namens Location Finder erstellt. Sie können das Beispiel live ausführen, den Quellcode auf GitHub sehen oder mehr darüber lesen, wie es in unserem Artikel Using the Permissions API funktioniert.
Das Beispiel der Permissions.query() zeigt auch Code, der die meisten Berechtigungen im aktuellen Browser testet und das Ergebnis protokolliert.
Spezifikationen
| Specification |
|---|
| Permissions> |