permissions
| Typ | Array |
|---|---|
| Verpflichtend | Nein |
| Manifest-Version | 2 oder höher |
| Beispiel |
json |
Verwenden Sie den permissions Schlüssel, um besondere Berechtigungen für Ihre Erweiterung anzufordern. Dieser Schlüssel ist ein Array von Strings, wobei jeder String einen Berechtigungsantrag darstellt.
Wenn Sie Berechtigungen über diesen Schlüssel anfordern, kann der Browser den Benutzer bei der Installation darüber informieren, dass die Erweiterung bestimmte Berechtigungen anfordert, und ihn bitten, die Berechtigungen zu bestätigen. Der Browser kann dem Benutzer auch erlauben, die Berechtigungen einer Erweiterung nach der Installation zu überprüfen. Da die Anforderung von Berechtigungen die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, ist eine sorgfältige Überlegung wert. Vermeiden Sie zum Beispiel das Anfordern unnötiger Berechtigungen und erklären Sie, warum Sie Berechtigungen in der Beschreibung Ihrer Erweiterung im Store anfordern. Weitere Informationen zu den zu berücksichtigenden Aspekten finden Sie im Artikel Anfordern der richtigen Berechtigungen.
Weitere Informationen darüber, wie Sie Berechtigungsanfragen testen und anzeigen können, finden Sie unter Testberechtigungsanfragen auf der Extension Workshop-Website.
Der Schlüssel kann drei Arten von Berechtigungen enthalten:
- Host-Berechtigungen (nur Manifest V2, Host-Berechtigungen werden im
host_permissionsManifest-Schlüssel für Manifest V3 oder höher angegeben.) - API-Berechtigungen
- die
activeTabBerechtigung
Host-Berechtigungen
Hinweis: Wie Sie Host-Berechtigungen anfordern, hängt davon ab, ob Sie diese zur Installationszeit oder zur Laufzeit benötigen und welche Manifest-Version Ihre Erweiterung verwendet.
- Manifest V2:
- Anforderung zur Installationszeit mit diesem (
permissions) Manifest-Schlüssel. - Anforderung zur Laufzeit mit dem
optional_permissionsManifest-Schlüssel.
- Anforderung zur Installationszeit mit diesem (
- Manifest V3 oder höher:
- Anforderung zur Installationszeit mit dem
host_permissionsManifest-Schlüssel. - Anforderung zur Laufzeit mit dem
optional_host_permissionsManifest-Schlüssel.
- Anforderung zur Installationszeit mit dem
Host-Berechtigungen werden als Match-Muster angegeben, wobei jedes Muster eine Gruppe von URLs identifiziert, für die die Erweiterung zusätzliche Berechtigungen anfordert. Zum Beispiel könnte eine Host-Berechtigung "*://developer.mozilla.org/*" sein.
Die zusätzlichen Berechtigungen umfassen:
- XMLHttpRequest und fetch Zugriff auf diese Ursprünge ohne Cross-Origin-Beschränkungen.
Hinweis: Für Manifest V2-Erweiterungen in Firefox umfasst dies Anfragen, die von Inhalts-Skripten gemacht werden.
- Die Möglichkeit, Tab-spezifische Metadaten ohne die "tabs" Berechtigung zu lesen, wie z.B. die
url,title, undfavIconUrlEigenschaften vontabs.TabObjekten. - Die Möglichkeit, Inhaltsskripte und Styles programmatisch in Seiten von diesen Ursprüngen einzufügen.
- Die Möglichkeit, Ereignisse von der
webRequestAPI für diese Hosts zu empfangen. - Die Möglichkeit, auf Cookies für diesen Host mit der
cookiesAPI zuzugreifen, solange die"cookies"API-Berechtigung vorhanden ist. - Umgehen des Tracking-Schutzes für Erweiterungsseiten, bei denen ein Host als vollständige Domain oder mit Platzhaltern angegeben ist. Inhaltsskripte können jedoch nur den Tracking-Schutz für Hosts umgehen, die mit einer vollständigen Domain angegeben sind.
- Die Möglichkeit, WebAuthn-Zugangsdaten zu erstellen und abzurufen. Weitere Details finden Sie unter Verwendung der Web Authn API in Web-Erweiterungen.
API-Berechtigungen
Sie geben API-Berechtigungen als Schlüsselwörter an, wobei jedes Schlüsselwort eine WebExtension API benennt, die die Erweiterung verwenden möchte.
Diese Berechtigungen sind in Manifest V2 und höher verfügbar, es sei denn, es ist anders vermerkt:
activeTabalarmsbackgroundbookmarksbrowserSettingsbrowsingDatacaptivePortalclipboardReadclipboardWritecontentSettingscontextMenuscontextualIdentitiescookiesdebuggerdeclarativeNetRequestdeclarativeNetRequestFeedbackdeclarativeNetRequestWithHostAccessdevtools(Diese Berechtigung wird implizit erteilt, wenn derdevtools_pageManifest-Schlüssel vorhanden ist.)dnsdownloadsdownloads.openfindgeolocationhistoryidentityidlemanagementmenusmenus.overrideContextnativeMessagingnotificationspageCapturepkcs11privacyproxyscriptingsearchsessionsstoragetabGroupstabHidetabsthemetopSitesunlimitedStorageuserScripts(siehe userScripts Berechtigung)webNavigationwebRequestwebRequestAuthProvider(Manifest V3 und höher)webRequestBlockingwebRequestFilterResponsewebRequestFilterResponse.serviceWorkerScript
In den meisten Fällen gewährt die Berechtigung nur den Zugriff auf die API, mit diesen Ausnahmen:
-
tabsgibt Ihnen Zugriff auf privilegierte Teile dertabsAPI ohne die Notwendigkeit von Host-Berechtigungen:Tab.url,Tab.title, undTab.faviconUrl.- In Firefox 85 und früher benötigen Sie außerdem
tabs, wenn SieurlimqueryInfoParameter zutabs.query()einschließen möchten. Die Erweiterung kann den Rest dertabsAPI ohne Anforderung einer Berechtigung verwenden. - Ab Firefox 86 und Chrome 50 können auch übereinstimmende Host-Berechtigungen anstelle der "tabs" Berechtigung verwendet werden.
- In Firefox 85 und früher benötigen Sie außerdem
-
webRequestBlockingermöglicht die Verwendung des"blocking"Arguments, sodass Sie Anfragen modifizieren und abbrechen können. -
downloads.openerlaubt die Nutzung derdownloads.open()API. -
tabHideerlaubt die Nutzung dertabs.hide()API.
activeTab Berechtigung
Wenn eine Erweiterung die Berechtigung "activeTab" hat, erhält sie bei Interaktion des Benutzers mit der Erweiterung zusätzliche Berechtigungen nur für den aktiven Tab.
Diese Interaktionen sind bekannt als Benutzeraktionen und umfassen den Benutzer:
- Klick auf den Symbolleistenschaltfläche oder Seitenaktionsschaltfläche der Erweiterung.
- Auswahl eines Kontextmenüeintrags der Erweiterung.
- Aktivierung einer Tastenkombination, die von der Erweiterung definiert wurde (ab Firefox 63).
- Klick auf eine Schaltfläche auf einer Seite, die mit der Erweiterung gebündelt ist.
- Klick auf einen Erweiterungsvorschlag in der Adressleiste (Omnibox) (ab Firefox 142).
Die zusätzlichen Berechtigungen sind:
- Die Möglichkeit, JavaScript oder CSS programmatisch in den Tab einzufügen (siehe Laden von Inhaltsskripten).
- Zugriff auf die privilegierten Teile der tabs API für den aktuellen Tab:
Tab.url,Tab.title, undTab.faviconUrl.
Die Absicht dieser Berechtigung ist es, Erweiterungen zu ermöglichen, einen häufigen Anwendungsfall zu erfüllen, ohne ihnen übermäßig mächtige Berechtigungen zu gewähren. Viele Erweiterungen möchten "etwas auf der aktuellen Seite tun, wenn der Benutzer es fordert".
Ein Beispiel: Stellen Sie sich eine Erweiterung vor, die ein Skript auf der aktuellen Seite ausführen möchte, wenn der Benutzer auf eine Browser-Aktion klickt. Wenn die activeTab-Berechtigung nicht existieren würde, müsste die Erweiterung die Host-Berechtigung <all_urls> anfordern. Aber das gibt der Erweiterung mehr Macht, als sie benötigt: sie kann nun Skripte in jedem Tab beliebig ausführen, anstatt nur im aktiven Tab und nur als Antwort auf eine Benutzeraktion.
Hinweis: Ihre Erweiterung kann nur auf den Tab oder die Daten zugreifen, die existierten, als die Benutzerinteraktion stattfand (z.B. ein Klick). Wenn der aktive Tab sich wegbewegt (z.B. durch das Beenden des Seitenladens oder ein anderes Ereignis), hat die Erweiterung nicht mehr die Erlaubnis, auf den Tab zuzugreifen.
Die activeTab-Berechtigung ermöglicht Skripting-Zugriff auf die Seite des obersten Tabs und Frames mit demselben Ursprung. Das Ausführen von Skripten oder das Modifizieren von Styles innerhalb von cross-origin Frames kann zusätzliche Host-Berechtigungen erfordern. Natürlich werden auch Einschränkungen und Begrenzungen in Bezug auf bestimmte Seiten und URI-Schemata angewendet.
In der Regel ist der Tab, dem activeTab gewährt wird, der aktive Tab, mit einer Ausnahme. Eine Erweiterung kann ein Menüelement mit der menus API erstellen, das angezeigt wird, wenn der Benutzer einen Tab mit der rechten Maustaste anklickt. Das heißt, ein Menü auf einem Element im Tabstreifen, das es dem Benutzer ermöglicht, zwischen Tabs zu wechseln. Wenn der Benutzer auf dieses Menü klickt, wird die activeTab-Berechtigung für den Tab gewährt, auf den der Benutzer geklickt hat, selbst wenn es nicht der aktive Tab ist (ab Firefox 63, Firefox-Bug 1446956).
Zwischenablage-Zugriff
Zwei Berechtigungen ermöglichen es einer Erweiterung, mit der Zwischenablage zu interagieren:
clipboardWrite-
Schreiben in die Zwischenablage mit
Clipboard.write(),Clipboard.writeText(),document.execCommand("copy")oderdocument.execCommand("cut"). clipboardRead-
Lesen von der Zwischenablage mit
Clipboard.read(),Clipboard.readText()oderdocument.execCommand("paste").
Siehe Interaktion mit der Zwischenablage für weitere Details.
Unbegrenzter Speicher
Die unlimitedStorage-Berechtigung:
- Ermöglicht Erweiterungen, alle von der
storage.localAPI auferlegten Quoten zu überschreiten. - Ermöglicht in Firefox Erweiterungen das Erstellen einer "persistenten" IndexedDB-Datenbank ohne, dass der Browser den Benutzer um Erlaubnis bittet, wenn die Datenbank erstellt wird.
Beispiele
"permissions": ["*://developer.mozilla.org/*"]
In Manifest V2 nur, Anforderung privilegierten Zugriffs auf Seiten unter developer.mozilla.org.
"permissions": ["tabs"]
Anforderung von Zugriff auf die privilegierten Teile der tabs API.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
In Manifest V2 nur, Anforderung beider oben genannten Berechtigungen.