Permissions API
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2022 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Permissions API bietet eine einheitliche programmatische Methode, um den Status von API-Berechtigungen im aktuellen Kontext, wie einer Webseite oder einem Worker, abzufragen. Zum Beispiel kann überprüft werden, ob die Berechtigung zur Nutzung einer bestimmten Funktion oder API erteilt, verweigert oder eine spezielle Benutzererlaubnis erforderlich ist.
Konzepte und Nutzung
Historisch gesehen haben verschiedene APIs ihre Berechtigungen inkonsistent gehandhabt – zum Beispiel bot die Notifications API eigene Methoden zur Anforderung von Berechtigungen und zur Überprüfung des Berechtigungsstatus, während die Geolocation API dies nicht tat. Die Permissions API bietet Tools, die es Entwicklern ermöglichen, eine konsistente Benutzererfahrung bei der Arbeit mit Berechtigungen zu implementieren.
Die Berechtigungen dieser API fassen effektiv alle Sicherheitsbeschränkungen für den Kontext zusammen, einschließlich jedweder Anforderung, dass eine API in einem sicheren Kontext verwendet werden muss, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen für Benutzerinteraktionen und Benutzeraufforderungen. Wenn eine API beispielsweise durch eine Permissions-Policy eingeschränkt ist, wird die zurückgegebene Berechtigung denied sein und der Benutzer wird nicht zur Gewährung des Zugriffs aufgefordert.
Die permissions-Eigenschaft steht sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf dem Navigator-Objekt zur Verfügung (WorkerNavigator – somit sind Berechtigungsprüfungen innerhalb von Workern möglich) und gibt ein Permissions-Objekt zurück, das Zugriff auf die Funktionalität der Permissions API bietet.
Sobald Sie dieses Objekt erhalten 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.
Berechtigung anfordern
Wenn der Berechtigungsstatus prompt ist, muss der Benutzer eine Aufforderung zur Gewährung des Zugriffs auf die Funktion bestätigen.
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 wird der Auslöser durch den Aufruf einer Methode, die auf die Funktion zugreift oder diese öffnet, oder durch das Registrieren für Benachrichtigungen von der Funktion, die anschließend darauf zugreifen wird, ausgelöst.
Beachten Sie, dass nicht alle Funktionen eine Aufforderung erfordern. Berechtigungen können durch eine Permission Policy, implizit durch transient activation oder durch irgendeinen anderen Mechanismus gewährt werden.
Berechtigung widerrufen
Der Widerruf von Berechtigungen wird nicht von der API verwaltet. Genauer gesagt, eine Methode Permissions.revoke() wurde vorgeschlagen, aber inzwischen in den Browsern, in denen sie implementiert war, entfernt.
Benutzer können Berechtigungen für bestimmte Websites manuell über die Browsereinstellungen entfernen:
- Firefox: Hamburger-Menü > Einstellungen > Datenschutz & Sicherheit > Berechtigungen (dann die Einstellungen-Taste für die entsprechende Berechtigung auswählen).
- Chrome: Hamburger-Menü > Einstellungen > Erweiterte Einstellungen anzeigen. Im Abschnitt Datenschutz auf Inhaltseinstellungen klicken. Im erscheinenden Dialog im Abschnitt Standort die Option Fragen, wenn eine Seite... wählen. Schließlich auf Ausnahmen verwalten klicken und die Berechtigungen entfernen, die Sie den interessierten Seiten erteilt haben.
Berechtigungsbewusste APIs
Nicht alle APIs’ Berechtigungsstatus können über die Permissions API abgefragt werden. Eine nicht vollständige Liste berechtigungsbewusster APIs beinhaltet:
- 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 - Local Network Access:
local-network,loopback-network. Die ältere Berechtigunglocal-network-accesswird weiterhin als Alias für die genaueren Äquivalente unterstützt. - 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 Kernfunktionalität der Permission API, wie Methoden zur Abfrage und zum Widerruf von Berechtigungen.
PermissionStatus-
Bietet Zugriff auf den aktuellen Status einer Berechtigung und einen Ereignishandler, um auf Änderungen im Berechtigungsstatus zu reagieren.
Erweiterungen anderer Schnittstellen
-
Bietet Zugriff auf das
Permissions-Objekt aus dem Hauptkontext und dem Worker-Kontext.
Beispiele
Wir haben ein Beispiel mit dem Namen Location Finder erstellt. Sie können das Beispiel live ausführen, den Quellcode auf GitHub anzeigen oder mehr darüber erfahren, wie es funktioniert, in unserem Artikel Using the Permissions API.
Das Beispiel Permissions.query() zeigt auch Code, der die meisten Berechtigungen im aktuellen Browser testet und das Ergebnis protokolliert.
Spezifikationen
| Spezifikation |
|---|
| Permissions> |