permissions
| Typ | Array |
|---|---|
| Erforderlich | 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 Nutzer bei der Installation darüber informieren, dass die Erweiterung bestimmte Berechtigungen anfordert, und er kann sie bitten, diese Berechtigungen zu genehmigen. Der Browser kann dem Nutzer auch erlauben, nach der Installation die Berechtigungen einer Erweiterung zu überprüfen. Da das Anfordern von Berechtigungen die Bereitschaft der Nutzer, Ihre Erweiterung zu installieren, beeinträchtigen kann, ist eine sorgfältige Überlegung sinnvoll. Vermeiden Sie es beispielsweise, unnötige Berechtigungen anzufordern, und erklären Sie in der Store-Beschreibung Ihrer Erweiterung, warum Sie Berechtigungen anfordern. Weitere Informationen zu den zu berücksichtigenden Aspekten finden Sie im Artikel Request the right permissions.
Weitere Informationen zum Testen und Überprüfen von Berechtigungsanfragen finden Sie unter Test permission requests auf der Extension Workshop-Website.
Der Schlüssel kann drei Arten von Berechtigungen enthalten:
- Host-Berechtigungen (nur Manifest V2, Host-Berechtigungen werden im Manifest V3 oder höher im
host_permissionsManifest-Schlüssel angegeben.) - API-Berechtigungen
- die Berechtigung
activeTab
Host-Berechtigungen
Hinweis: Wie Sie Host-Berechtigungen anfordern, hängt davon ab, ob Sie diese zur Installationszeit oder zur Laufzeit anfordern möchten und welche Manifest-Version Ihre Erweiterung verwendet.
- Manifest V2:
- Installationszeit-Anfrage mit diesem (
permissions) Manifest-Schlüssel. - Laufzeitanfrage mit dem
optional_permissionsManifest-Schlüssel.
- Installationszeit-Anfrage mit diesem (
- Manifest V3 oder höher:
- Installationszeit-Anfrage mit dem
host_permissionsManifest-Schlüssel. - Laufzeitanfrage mit dem
optional_host_permissionsManifest-Schlüssel.
- Installationszeit-Anfrage mit dem
Host-Berechtigungen werden als Match-Muster angegeben, und jedes Muster identifiziert eine Gruppe von URLs, 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-Einschränkungen.
Hinweis: Für Erweiterungen der Manifest-Version V2 in Firefox schließt dies Anfragen ein, die von Inhaltsskripten gestellt werden.
- die Fähigkeit, registerkartenbezogene Metadaten ohne die "tabs"-Berechtigung auszulesen, wie die Eigenschaften
url,titleundfavIconUrlvontabs.TabObjekten - die Fähigkeit, Inhaltsskripte und Styles programmgesteuert in Seiten einzuspeisen, die von diesen Ursprünge bereitgestellt werden.
- die Fähigkeit, Ereignisse von der
webRequestAPI für diese Hosts zu empfangen - die Fähigkeit, Cookies für diesen Host mithilfe der
cookiesAPI zuzugreifen, solange die"cookies"API-Berechtigung vorhanden ist. - das Umgehen des Tracking-Schutzes für Erweiterungsseiten, bei denen ein Host als vollständige Domain oder mit Platzhaltern angegeben ist. Inhaltsskripte können jedoch den Tracking-Schutz nur für Hosts mit vollständiger Domain umgehen.
- die Fähigkeit, WebAuthn-Anmeldeinformationen zu erstellen und abzurufen. Siehe Use Web Authn API in web extensions für Details.
API-Berechtigungen
Sie geben API-Berechtigungen als Schlüsselwörter an, und jedes Schlüsselwort benennt eine WebExtension API, die die Erweiterung verwenden möchte.
Diese Berechtigungen sind in Manifest V2 und höher verfügbar, sofern nicht anders angegeben:
activeTabalarmsbackgroundbookmarksbrowserSettingsbrowsingDatacaptivePortalclipboardReadclipboardWritecontentSettingscontextMenuscontextualIdentitiescookiesdebuggerdeclarativeNetRequestdeclarativeNetRequestFeedbackdeclarativeNetRequestWithHostAccessdevtools(Diese Berechtigung wird implizit erteilt, wenn derdevtools_pageManifest-Schlüssel vorhanden ist.)dnsdownloadsdownloads.openfindgeolocationhistoryidentityidlemanagementmenusmenus.overrideContextnativeMessagingnotificationspageCapturepkcs11privacypublicSuffixproxyscriptingsearchsessionsstoragetabGroupstabHidetabsthemetopSitesunlimitedStorageuserScripts(siehe userScripts permission)webNavigationwebRequestwebRequestAuthProvider(Manifest V3 und höher)webRequestBlockingwebRequestFilterResponsewebRequestFilterResponse.serviceWorkerScript
In den meisten Fällen gewährt die Berechtigung nur Zugriff auf die API, mit diesen Ausnahmen:
-
tabsermöglicht Ihnen den Zugriff auf privilegierte Teile dertabsAPI ohne die Notwendigkeit für Host-Berechtigungen:Tab.url,Tab.titleundTab.faviconUrl.- In Firefox 85 und früher benötigen Sie auch
tabs, wenn Sieurlim ParameterqueryInfoantabs.query()einfügen möchten. Die Erweiterung kann den Rest dertabsAPI verwenden, ohne irgendeine Berechtigung anzufordern. - Ab Firefox 86 und Chrome 50 können auch passende Host-Berechtigungen anstelle der "tabs"-Berechtigung verwendet werden.
- In Firefox 85 und früher benötigen Sie auch
-
webRequestBlockingermöglicht Ihnen die Verwendung des Arguments"blocking", sodass Sie Anfragen ändern und abbrechen können. -
downloads.opengestattet Ihnen die Nutzung derdownloads.open()API. -
tabHidegestattet Ihnen die Nutzung dertabs.hide()API.
activeTab-Berechtigung
Wenn eine Erweiterung die Berechtigung "activeTab" hat, erhält die Erweiterung, wenn ein Nutzer mit ihr interagiert, zusätzliche Berechtigungen nur für den aktiven Tab.
Diese Interaktionen sind als Nutzeraktionen bekannt und beinhalten, dass der Nutzer:
- auf die Symbolleisten-Taste der Erweiterung oder Seitenaktion klickt.
- einen Kontextmenüeintrag der Erweiterung auswählt.
- eine von der Erweiterung definierte Tastenkombination aktiviert (ab Firefox 63).
- auf eine Schaltfläche auf einer mitgelieferten Seite 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 einzufügen (siehe Loading content scripts).
- Zugriff auf die privilegierten Teile der tabs-API für den aktuellen Tab:
Tab.url,Tab.titleundTab.faviconUrl.
Die Absicht dieser Berechtigung besteht darin, Erweiterungen die Möglichkeit zu geben, einen häufigen Anwendungsfall zu bearbeiten, ohne ihnen zu mächtige Berechtigungen zu gewähren. Viele Erweiterungen möchten "etwas mit der aktuellen Seite tun, wenn der Nutzer fragt".
Betrachten Sie zum Beispiel eine Erweiterung, die ein Skript auf der aktuellen Seite ausführen möchte, wenn der Nutzer auf eine Browseraktion 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 jetzt Skripte in jedem Tab zu jeder Zeit ausführen, anstatt nur im aktiven Tab und nur als Antwort auf eine Nutzeraktion.
Hinweis: Ihre Erweiterung kann nur auf den Tab oder die Daten zugreifen, die existierten, als die Nutzerinteraktion stattfand (z. B. ein Klick). Wenn der aktive Tab weiter navigiert (z. B. durch das Beenden des Seitenladens oder ein anderes Ereignis), hat die Erweiterung nicht mehr die Berechtigung, auf den Tab zuzugreifen.
Die activeTab-Berechtigung ermöglicht Skripting-Zugriff auf die Seite des übergeordneten Tabs und Frames mit demselben Ursprung. Das Ausführen von Skripten oder das Ändern von Styles in cross-origin Frames kann zusätzliche Host-Berechtigungen erfordern. Natürlich gelten auch Einschränkungen und Begrenzungen in Bezug auf bestimmte Sites und URI-Schemata.
Üblicherweise ist der Tab, dem activeTab gewährt wird, der aktive Tab, mit einer Ausnahme. Eine Erweiterung kann mit der menus API ein Menüelement erstellen, das angezeigt wird, wenn der Nutzer einen Tab kontext-klickt. Das ist ein Menü auf einem Element im Tabstreifen, mit dem der Nutzer zwischen Tabs wechseln kann. Wenn der Nutzer auf dieses Menü klickt, dann wird die activeTab-Berechtigung für den Tab gewährt, den der Nutzer angeklickt hat, auch wenn er nicht der aktive Tab ist (ab Firefox 63, Firefox bug 1446956).
Zwischenablage-Zugriff
Zwei Berechtigungen ermöglichen einer Erweiterung die Interaktion mit der Zwischenablage:
clipboardWrite-
Schreibzugriff auf die Zwischenablage mit
Clipboard.write(),Clipboard.writeText(),document.execCommand("copy")oderdocument.execCommand("cut"). clipboardRead-
Lesezugriff auf die Zwischenablage mit
Clipboard.read(),Clipboard.readText()oderdocument.execCommand("paste").
Siehe Interact with the clipboard für weitere Details.
Unbegrenzter Speicher
Die Berechtigung unlimitedStorage:
- Ermöglicht Erweiterungen, jede durch die
storage.localAPI auferlegte Quote zu überschreiten - Ermöglicht es Erweiterungen in Firefox, eine "persistente" IndexedDB-Datenbank zu erstellen, ohne dass der Browser den Nutzer um Erlaubnis fragt, wenn die Datenbank erstellt wird.
Beispiele
"permissions": ["*://developer.mozilla.org/*"]
In Manifest V2 nur: Privilegierten Zugriff auf Seiten unter developer.mozilla.org anfordern.
"permissions": ["tabs"]
Zugriff auf die privilegierten Teile der tabs API anfordern.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
In Manifest V2 nur: Beide oben genannten Berechtigungen anfordern.