Permissions API
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Permissions API bietet eine konsistente programmatische Möglichkeit, den Status von API-Berechtigungen in dem aktuellen Kontext abzufragen, wie z. B. auf einer Webseite oder einem Worker. Sie kann beispielsweise 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 Nutzung
Historisch gesehen behandelten verschiedene APIs ihre eigenen Berechtigungen inkonsistent — zum Beispiel bot die Notifications API ihre eigenen Methoden zur Anforderung von Berechtigungen und zur Überprüfung des Berechtigungsstatus an, während die Geolocation API dies nicht tat. Die Permissions API bietet die Werkzeuge, um Entwicklern zu ermöglichen, eine konsistente Benutzererfahrung im Umgang mit Berechtigungen zu implementieren.
Die Berechtigungen dieser API aggregieren effektiv alle Sicherheitsbeschränkungen für den Kontext, einschließlich der Anforderung, dass eine API in einem sicheren Kontext verwendet werden muss, Permissions-Policy-Beschränkungen, die auf das Dokument angewendet werden, Anforderungen für Benutzerinteraktion und Benutzeraufforderungen. So würde beispielsweise, wenn eine API durch Berechtigungsrichtlinien eingeschränkt ist, die zurückgegebene Berechtigung denied
sein und der Benutzer würde nicht aufgefordert, einen Zugriff zu erlauben.
Die permissions
-Eigenschaft wurde sowohl im Standard-Browsing-Kontext als auch im Worker-Kontext (WorkerNavigator
— so sind Berechtigungsprüfungen auch innerhalb von Workern verfügbar) im Navigator
-Objekt verfügbar gemacht 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 Promise zurückzugeben, das mit dem PermissionStatus
für eine bestimmte API erfüllt wird.
Anfordern von Berechtigungen
Wenn der Berechtigungsstatus prompt
lautet, muss der Benutzer eine Aufforderung anerkennen, um Zugriff auf die Funktion zu gewähren.
Der Mechanismus, der diese Aufforderung auslöst, hängt von der spezifischen API ab — er wird nicht als Teil der Permissions API definiert. Im Allgemeinen wird der Auslöser durch Code verursacht, der eine Methode aufruft, um auf die Funktion zuzugreifen oder sie zu öffnen, oder der Anmeldungen für Benachrichtigungen von der Funktion mit sich führt, die sie anschließend darauf zugreift.
Beachten Sie, dass nicht alle Funktionen eine Aufforderung erfordern. Die Berechtigung kann durch eine Permission Policy
, implizit durch transient activation, oder über einen anderen Mechanismus gewährt werden.
Zurückziehen von Berechtigungen
Das Zurückziehen von Berechtigungen wird nicht von der API verwaltet. Genauer gesagt, eine Methode Permissions.revoke()
wurde vorgeschlagen, aber seither in denjenigen Browsern entfernt, in denen sie implementiert war.
Benutzer können die Berechtigung für bestimmte Websites manuell über die Browsereinstellungen entfernen:
- Firefox: Hamburger-Menü > Einstellungen > Datenschutz & Sicherheit > Berechtigungen (dann den Einstellungen-Button für die jeweilige Berechtigung auswählen).
- Chrome: Hamburger-Menü > Einstellungen > Erweiterte Einstellungen anzeigen. Im Bereich Datenschutz auf Inhaltseinstellungen klicken. In dem erscheinenden Dialogfeld den Abschnitt Standort finden und Fragen, wenn eine Website versucht... auswählen. Schließlich auf Ausnahmen verwalten klicken und die Berechtigungen entfernen, die Sie den betreffenden Websites gewährt haben.
Berechtigungsbewusste APIs
Nicht der Berechtigungsstatus aller APIs kann mithilfe der Permissions API abgefragt werden. Eine nicht erschöpfende Liste von berechtigungsbewussten APIs umfasst:
- Background Synchronization API:
background-sync
(sollte immer gewährt werden) - 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
- 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 Permissions API, wie Methoden zum Abfragen und Zurückziehen 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 mit dem Namen Location Finder erstellt. Sie können das Beispiel live ausführen, den Quellcode auf GitHub ansehen oder mehr darüber erfahren, wie es funktioniert, in unserem Artikel Using the Permissions API.
Das Permissions.query()
-Beispiel zeigt auch Code, der die meisten Berechtigungen im aktuellen Browser testet und das Ergebnis protokolliert.
Spezifikationen
Specification |
---|
Permissions> |
Browser-Kompatibilität
>api.Permissions
Loading…
api.Navigator.permissions
Loading…
api.WorkerNavigator.permissions
Loading…