permissions
| Typ | Array |
|---|---|
| Verpflichtend | Nein |
| Manifest Version | 2 oder höher |
| Beispiel |
json |
Verwenden Sie den Schlüssel permissions, um spezielle Berechtigungen für Ihre Erweiterung anzufordern. Dieser Schlüssel ist ein Array von Zeichenfolgen, von denen jede eine Berechtigungsanfrage darstellt.
Wenn Sie Berechtigungen mit diesem Schlüssel anfordern, kann der Browser den Benutzer bei der Installation darüber informieren, dass die Erweiterung bestimmte Berechtigungen anfordert, und ihn bitten, zu bestätigen, dass er bereit ist, diese Berechtigungen zu gewähren. Der Browser kann dem Benutzer auch erlauben, die Berechtigungen einer Erweiterung nach der Installation zu überprüfen. Da das Anfordern von Berechtigungen die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, lohnt sich eine sorgfältige Überlegung. Zum Beispiel sollten Sie unnötige Berechtigungen vermeiden und erklären, warum Sie Berechtigungen in der Beschreibung Ihrer Erweiterung im Store anfordern. Für weitere Informationen zu den zu berücksichtigenden Fragen siehe den Artikel Die richtigen Berechtigungen anfordern.
Informationen zum Testen und Vorschau von Berechtigungsanfragen finden Sie unter Berechtigungsanfragen testen auf der Extension Workshop-Website.
Der Schlüssel kann drei Arten von Berechtigungen enthalten:
- Hostberechtigungen (nur Manifest V2, Hostberechtigungen werden im Manifest V3 oder höher im
host_permissionsManifest-Schlüssel angegeben.) - API-Berechtigungen
- die
activeTabBerechtigung
Hostberechtigungen
Hinweis: Wie Sie Hostberechtigungen anfordern, hängt davon ab, ob Sie diese zur Installationszeit oder zur Laufzeit und mit welcher Manifestversion Ihre Erweiterung verwendet.
- Manifest V2:
- Installationszeitliche Anforderung mit diesem (
permissions) Manifest-Schlüssel. - Laufzeitliche Anforderung mit dem
optional_permissionsManifest-Schlüssel.
- Installationszeitliche Anforderung mit diesem (
- Manifest V3 oder höher:
- Installationszeitliche Anforderung mit dem
host_permissionsManifest-Schlüssel. - Laufzeitliche Anforderung mit dem
optional_host_permissionsManifest-Schlüssel.
- Installationszeitliche Anforderung mit dem
Hostberechtigungen werden als Übereinstimmungsmuster angegeben, und jedes Muster identifiziert eine Gruppe von URLs, für die die Erweiterung zusätzliche Berechtigungen anfordert. Zum Beispiel könnte eine Hostberechtigung "*://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 nur in Firefox, schließt dies Anfragen ein, die von Inhalts-Skripten gesendet werden.
- die Fähigkeit, tab-spezifische Metadaten ohne die "tabs"-Berechtigung zu lesen, wie die
url,titleundfavIconUrlEigenschaften vontabs.TabObjekten - die Fähigkeit, Inhalts-Skripte zu injizieren und Styles programmgesteuert in Seiten, die von diesen Ursprüngen geliefert werden.
- die Fähigkeit, Ereignisse von der
webRequestAPI für diese Hosts zu empfangen - die Möglichkeit, auf Cookies für diesen Host mithilfe der
cookiesAPI zuzugreifen, solange die"cookies"API-Berechtigung vorliegt. - das Umgehen des Tracking-Schutzes für Erweiterungsseiten, bei denen ein Host als vollständige Domain oder mit Wildcards angegeben ist. Inhalts-Skripte hingegen können den Tracking-Schutz nur für Hosts umgehen, die mit einer vollständigen Domain angegeben sind.
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 darüber verfügbar, es sei denn, anders angegeben:
activeTabalarmsbackgroundbookmarksbrowserSettingsbrowsingDatacaptivePortalclipboardReadclipboardWritecontentSettingscontextMenuscontextualIdentitiescookiesdebuggerdeclarativeNetRequestdeclarativeNetRequestFeedbackdeclarativeNetRequestWithHostAccessdevtools(Diese Berechtigung wird implizit gewährt, 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 Zugriff auf die API, mit folgenden Ausnahmen:
-
tabsgibt Ihnen Zugriff auf privilegierte Teile dertabsAPI ohne die Notwendigkeit von Hostberechtigungen:Tab.url,Tab.titleundTab.faviconUrl.- In Firefox 85 und älter benötigen Sie auch
tabs, wenn Sie dieurlimqueryInfoParameter vontabs.query()einbeziehen möchten. Die Erweiterung kann den Rest dertabsAPI ohne Anforderung von Berechtigungen verwenden. - Ab Firefox 86 und Chrome 50 können übereinstimmende Hostberechtigungen statt der "tabs"-Berechtigung verwendet werden.
- In Firefox 85 und älter benötigen Sie auch
-
webRequestBlockingermöglicht die Verwendung des"blocking"Arguments, um Anfragen zu modifizieren und abzubrechen. -
downloads.openermöglicht die Nutzung derdownloads.open()API. -
tabHideermöglicht die Nutzung dertabs.hide()API.
activeTab Berechtigung
Wenn eine Erweiterung die "activeTab" Berechtigung hat, werden der Erweiterung beim Benutzerinteraktion zusätzliche Berechtigungen nur für den aktiven Tab gewährt.
Diese Interaktionen sind als Benutzeraktionen bekannt und umfassen, dass der Benutzer:
- auf die Symbolleistenschaltfläche oder Seitenschaltfläche der Erweiterung klickt.
- einen Kontextmenüeintrag der Erweiterung auswählt.
- eine von der Erweiterung definierte Tastenkombination aktiviert (ab Firefox 63).
- auf einen auf einer mit der Erweiterung gebündelten Seite eingebetteten Knopf klickt.
- auf einen Erweiterungsvorschlag in der Adressleiste (Omnibox) klickt (ab Firefox 142).
Die zusätzlichen Berechtigungen sind:
- Die Fähigkeit, JavaScript oder CSS programmgesteuert in den Tab zu injizieren (siehe Laden von Inhalts-Skripten).
- Zugriff auf die privilegierten Teile der Tabs-API für den aktuellen Tab:
Tab.url,Tab.titleundTab.faviconUrl.
Der Zweck dieser Berechtigung besteht darin, 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 anfordert".
Betrachten Sie zum Beispiel eine Erweiterung, die ein Skript auf der aktuellen Seite ausführen möchte, wenn der Benutzer auf eine Browser-Aktion klickt. Wenn die activeTab Berechtigung nicht existierte, müsste die Erweiterung die Hostberechtigung <all_urls> anfordern. Aber das gibt der Erweiterung mehr Macht, als sie benötigt: Sie kann jetzt Skripte in jedem Tab ausführen, jederzeit, anders als nur im aktiven Tab und nur in Reaktion 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 weg navigiert (z. B. aufgrund des Abschlusses des Seitenladevorgangs oder eines anderen Ereignisses), hat die Erweiterung keine Berechtigung mehr, auf den Tab zuzugreifen.
Die activeTab Berechtigung ermöglicht Skripting-Zugriff auf die Seite des obersten Tabs und Same-Origin-Frames. Das Ausführen von Skripten oder das Modifizieren von Styles innerhalb von Cross-Origin Frames kann zusätzliche Hostberechtigungen erfordern. Natürlich werden Einschränkungen und Begrenzungen, die in Bezug auf bestimmte Websites und URI-Schemata spezifisch sind, ebenfalls angewandt.
Normalerweise ist der Tab, dem activeTab gewährt wird, der aktive Tab, mit einer Ausnahme. Eine Erweiterung kann einen Menüpunkte mit der menus API erstellen, der angezeigt wird, wenn der Benutzer auf ein Tab kontextklickt. Das heißt, ein Menü auf einem Element im Tabstrip, das dem Benutzer erlaubt, 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 aus der Zwischenablage mit
Clipboard.read(),Clipboard.readText()oderdocument.execCommand("paste").
Siehe Mit der Zwischenablage interagieren für weitere Details.
Unbegrenzter Speicher
Die unlimitedStorage Berechtigung:
- Ermöglicht Erweiterungen, ein von der
storage.localAPI auferlegtes Quota zu überschreiten - Erlaubt es Erweiterungen in Firefox, eine "persistent" IndexedDB-Datenbank zu erstellen, ohne dass der Browser den Benutzer zum Zeitpunkt der Erstellung der Datenbank um Erlaubnis fragt.
Beispiele
"permissions": ["*://developer.mozilla.org/*"]
Verlangen Sie in Manifest V2 nur privilegierten Zugriff auf Seiten unter developer.mozilla.org.
"permissions": ["tabs"]
Fordern Sie den Zugriff auf die privilegierten Teile der tabs API an.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
Fordern Sie in Manifest V2 sowohl die obigen Berechtigungen an.