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 konsistente programmatische Möglichkeit, den Status von API-Berechtigungen abzufragen, die dem aktuellen Kontext, wie einer Webseite oder einem Worker, zugeordnet sind. Beispielsweise kann damit festgestellt werden, ob die Berechtigung zum Zugriff auf ein bestimmtes Feature oder eine API erteilt, verweigert oder eine spezifische Benutzerberechtigung erforderlich ist.
Konzepte und Verwendung
Historisch gesehen handhaben verschiedene APIs ihre eigenen Berechtigungen inkonsistent – 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, die es Entwicklern ermöglichen, eine konsistente Benutzererfahrung im Umgang mit Berechtigungen umzusetzen.
Die Berechtigungen dieser API fassen alle Sicherheitsbeschränkungen für den Kontext zusammen, einschließlich der Anforderung, dass eine API in einem sicheren Kontext verwendet wird, und der Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen an die Benutzerinteraktion sowie Benutzereingabeaufforderungen. Wenn eine API beispielsweise durch eine Berechtigungspolitik eingeschränkt ist, wird die zurückgegebene Berechtigung als denied angegeben und der Benutzer wird nicht zur Zugriffsgewährung aufgefordert.
Die Eigenschaft permissions wurde sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext auf das Navigator-Objekt gebracht (WorkerNavigator – Berechtigungsüberprüfungen sind also innerhalb von Workern verfügbar) und gibt ein Permissions-Objekt zurück, das Zugriff auf die Funktionen der Permissions-API bietet.
Sobald Sie dieses Objekt haben, können Sie die Methode Permissions.query() verwenden, um einen Promise zurückzugeben, der mit dem PermissionStatus für eine spezifische API aufgelöst wird.
Berechtigung anfordern
Wenn der Berechtigungsstatus prompt ist, muss der Benutzer eine Eingabeaufforderung zur Gewährung des Zugriffs auf das Feature bestätigen.
Der Mechanismus, der diese Eingabeaufforderung auslöst, hängt von der spezifischen API ab – er ist nicht Teil der Permissions-API definiert. Im Allgemeinen wird der Auslöser durch Code hervorgerufen, der eine Methode aufruft, um auf das Feature zuzugreifen oder es zu öffnen, oder der sich für Benachrichtigungen von dem Feature registriert, das anschließend darauf zugreifen wird.
Beachten Sie, dass nicht alle Features eine Eingabeaufforderung erfordern. Die Berechtigung könnte durch eine Permission Policy, implizit durch transient activation oder über einen anderen Mechanismus erteilt werden.
Berechtigung widerrufen
Der Widerruf von Berechtigungen wird nicht von der API verwaltet. Genauer gesagt wurde eine Methode Permissions.revoke() vorgeschlagen, aber inzwischen aus den Browsern entfernt, in denen sie implementiert war.
Benutzer können Berechtigungen für bestimmte Websites 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 resultierenden Dialogfeld finden Sie den Abschnitt Standort und wählen Fragen, wenn eine Website versucht, .... Schließlich auf Ausnahmen verwalten klicken und die den Websites gewährten Berechtigungen, die Sie interessieren, entfernen.
Berechtigungsbewusste APIs
Nicht alle APIs können ihre Berechtigungsstatus über die Permissions-API abfragen. Eine nicht erschöpfende Liste berechtigungsbewusster 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 - Local Network Access:
local-network,loopback-network. Die ältere Berechtigunglocal-network-accesswird noch als Alias für die granulareren Entsprechungen 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 - Web Periodic Background Synchronization API:
periodic-background-sync - Window Management API:
window-management
Schnittstellen
Permissions-
Bietet die Kernfunktionalität der Permissions-API, wie Methoden zum Abfragen und Widerrufen von Berechtigungen.
PermissionStatus-
Bietet Zugriff auf den aktuellen Status einer Berechtigung und einen Ereignis-Handler zur Reaktion auf Änderungen des Berechtigungsstatus.
Erweiterungen zu anderen Schnittstellen
-
Bietet Zugriff auf das
Permissions-Objekt aus dem Hauptkontext bzw. 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 in unserem Artikel Using the Permissions API funktioniert.
Das Beispiel Permissions.query() zeigt auch Code, der die meisten Berechtigungen im aktuellen Browser testet und das Ergebnis protokolliert.
Spezifikationen
| Spezifikation |
|---|
| Permissions> |