permissions
| Typ | Array |
|---|---|
| Verpflichtend | Nein |
| Manifestversion | 2 oder höher |
| Beispiel |
json |
Verwenden Sie den permissions-Schlüssel, um spezielle Berechtigungen für Ihre Erweiterung anzufordern. Dieser Schlüssel ist ein Array von Zeichenfolgen, und jede Zeichenfolge ist eine Anfrage für eine Berechtigung.
Wenn Sie Berechtigungen mit diesem Schlüssel anfordern, kann der Browser den Benutzer bei der Installation darüber informieren, dass die Erweiterung bestimmte Privilegien anfordert, und ihn bitten, zu bestätigen, dass er bereit ist, diese Privilegien zu gewähren. Der Browser kann dem Benutzer auch erlauben, die Privilegien einer Erweiterung nach der Installation zu überprüfen. Da die Anfrage zur Gewährung von Privilegien die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, ist es ratsam, die Anforderung von Privilegien sorgfältig zu überlegen. Beispielsweise sollten Sie vermeiden, unnötige Berechtigungen anzufordern, und möglicherweise Informationen darüber bereitstellen, warum Sie Berechtigungen in der Beschreibung Ihrer Erweiterung im jeweiligen Store anfordern. Weitere Informationen zu den Überlegungen, die Sie anstellen sollten, finden Sie im Artikel Request the right permissions.
Informationen dazu, wie Sie Berechtigungsanfragen testen und eine Vorschau anzeigen können, finden Sie unter Test permission requests auf der Webseite des Extension Workshop.
Der Schlüssel kann drei Arten von Berechtigungen enthalten:
- Host-Berechtigungen (Nur Manifest V2, Host-Berechtigungen werden im
host_permissions-Manifest-Schlüssel für Manifest V3 oder höher angegeben.) - API-Berechtigungen
- die
activeTab-Berechtigung
Host-Berechtigungen
Hinweis: Wie Sie Host-Berechtigungen anfordern, hängt davon ab, ob Sie sie zur Installationszeit oder zur Laufzeit benötigen und welche Manifestversion Ihre Erweiterung verwendet.
- Manifest V2:
- Anfrage zur Installationszeit mit diesem (
permissions) Manifest-Schlüssel. - Anfrage zur Laufzeit mit dem
optional_permissions-Manifest-Schlüssel.
- Anfrage zur Installationszeit mit diesem (
- Manifest V3 oder höher:
- Anfrage zur Installationszeit mit dem
host_permissions-Manifest-Schlüssel. - Anfrage zur Laufzeit mit dem
optional_host_permissions-Manifest-Schlüssel.
- Anfrage zur Installationszeit mit dem
Host-Berechtigungen werden als Match-Muster angegeben, und jedes Muster identifiziert eine Gruppe von URLs, für die die Erweiterung zusätzliche Privilegien anfordert. Zum Beispiel könnte eine Host-Berechtigung "*://developer.mozilla.org/*" sein.
Die zusätzlichen Privilegien umfassen:
- XMLHttpRequest- und fetch-Zugriff auf diese Ursprünge ohne Cross-Origin-Beschränkungen (auch für Anfragen, die von Content-Skripten gemacht werden)
- die Möglichkeit, tab-spezifische Metadaten ohne die "tabs"-Berechtigung zu lesen, wie die
url,titleundfavIconUrl-Eigenschaften vontabs.Tab-Objekten - die Möglichkeit, Content-Scripts zu injizieren und Styles programmatisch in Seiten einzufügen, die von diesen Ursprüngen stammen.
- die Möglichkeit, Ereignisse der
webRequest-API für diese Hosts zu empfangen - die Möglichkeit, auf Cookies für diesen Host mit der
cookies-API zuzugreifen, sofern die"cookies"-API-Berechtigung ebenfalls enthalten ist. - das Umgehen des Tracking-Schutzes für Erweiterungsseiten, bei denen ein Host als vollständige Domain oder mit Wildcards angegeben wird. Content-Scripts können jedoch den Tracking-Schutz nur für Hosts umgehen, die mit einer vollständigen Domain angegeben werden.
In Firefox erhalten Erweiterungen ab Version 56 automatisch Host-Berechtigungen für ihren eigenen Ursprung, der die Form hat:
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
wobei 60a20a9b-1ad4-af49-9b6c-c64c98c37920 die interne ID der Erweiterung ist. Die Erweiterung kann diese URL programmatisch durch Aufruf von extension.getURL() erhalten:
browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
API-Berechtigungen
API-Berechtigungen werden als Schlüsselwörter angegeben, 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 automatisch erteilt, wenn derdevtools_page-Manifest-Schlüssel vorhanden ist.)dnsdownloadsdownloads.openfindgeolocationhistoryidentityidlemanagementmenusmenus.overrideContextnativeMessagingnotificationspageCapturepkcs11privacyproxyscriptingsearchsessionsstoragetabGroupstabHidetabsthemetopSitesunlimitedStorageuserScripts(siehe userScripts permission)webNavigationwebRequestwebRequestAuthProvider(Manifest V3 und höher)webRequestBlockingwebRequestFilterResponsewebRequestFilterResponse.serviceWorkerScript
In den meisten Fällen gewährt die Berechtigung einfach Zugriff auf die API, mit den folgenden 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 auch
tabs, wenn SieurlimqueryInfo-Parameter zutabs.query()einbeziehen möchten. Der Rest dertabs-API kann ohne Anforderung einer Berechtigung verwendet werden. - 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"blocking"-Arguments, sodass Sie Anfragen modifizieren und abbrechen können. -
downloads.openermöglicht Ihnen die Nutzung derdownloads.open()-API. -
tabHideermöglicht Ihnen die Nutzung dertabs.hide()-API.
activeTab-Berechtigung
Wenn eine Erweiterung die "activeTab"-Berechtigung hat, erhält sie, wenn ein Benutzer mit der Erweiterung interagiert, zusätzliche Privilegien nur für den aktiven Tab.
Diese Interaktionen werden als Benutzeraktionen bezeichnet und umfassen den Benutzer:
- Klicken auf den Toolbar-Button oder die Seitenschaltfläche der Erweiterung.
- Auswählen eines Kontextmenüpunkts der Erweiterung.
- Aktivieren einer von der Erweiterung definierten Tastenkombination (ab Firefox 63).
- Klicken auf eine Schaltfläche auf einer Seite, die mit der Erweiterung gebündelt ist.
- Klicken auf einen Erweiterungsvorschlag in der Adressleiste (omnibox) (ab Firefox 142).
Die zusätzlichen Privilegien sind:
- Die Möglichkeit, JavaScript oder CSS programmgesteuert in den Tab einzufügen (siehe Loading content scripts).
- Zugriff auf die privilegierten Teile der
tabsAPI für den aktuellen Tab:Tab.url,Tab.titleundTab.faviconUrl.
Die Absicht dieser Berechtigung ist es, Erweiterungen zu ermöglichen, einen häufigen Anwendungsfall zu erfüllen, ohne ihnen sehr leistungsstarke Berechtigungen geben zu müssen. Viele Erweiterungen möchten "etwas auf der aktuellen Seite tun, wenn der Benutzer es verlangt".
Zum Beispiel, betrachten Sie eine Erweiterung, die ein Skript auf der aktuellen Seite ausführen möchte, wenn der Benutzer auf eine Aktion im Browser klickt. Wenn die activeTab-Berechtigung nicht existierte, müsste die Erweiterung die Host-Berechtigung <all_urls> anfordern. Aber dies gibt der Erweiterung mehr Macht, als sie braucht: Sie könnte jetzt Skripte in jedem Tab jederzeit ausführen, anstatt nur im aktiven Tab und nur als Reaktion auf eine Benutzeraktion.
Hinweis: Sie können nur auf die Tab-/Daten zugreifen, die zu dem Zeitpunkt der Benutzerinteraktion vorhanden waren (z. B. beim Klicken). Wenn der aktive Tab zu einem anderen Ereignis wechselt (z. B. durch Fertigstellen des Ladens oder ein anderes Ereignis), gewährt die Berechtigung keinen Zugang mehr zu dem Tab.
Die activeTab-Berechtigung ermöglicht es, auf die Seite des obersten Tabs und Frames mit demselben Ursprung zuzugreifen. Das Ausführen von Skripten oder das Modifizieren von Stilen innerhalb von Cross-Origin-Frames kann zusätzliche Host-Berechtigungen erfordern. Selbstverständlich gelten auch Einschränkungen und Beschränkungen in Bezug auf bestimmte Websites und URI-Schemata.
Normalerweise 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 mit der rechten Maustaste auf einen Tab klickt. Das heißt, ein Menü auf einem Element im Tabstreifen, das dem Benutzer erlaubt, von einem Tab zum anderen zu wechseln. Wenn der Benutzer dieses Menü anklickt, 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).
Zwischenablagezugriff
Es gibt zwei Berechtigungen, die der Erweiterung den Zugriff auf die Zwischenablage ermöglichen:
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")
Weitere Details finden Sie unter Interact with the clipboard.
Unbegrenzter Speicher
Die unlimitedStorage-Berechtigung:
- Ermöglicht es Erweiterungen, ein beliebiges durch die
storage.localAPI festgelegtes Kontingent zu überschreiten. - Ermöglicht es in Firefox Erweiterungen, ohne Aufforderung des Browsers zum Zeitpunkt der Datenbankerstellung eine "persistent" IndexedDB-Datenbank zu erstellen.
Beispiele
"permissions": ["*://developer.mozilla.org/*"]
Nur in Manifest V2, um privilegierten Zugriff auf Seiten unter developer.mozilla.org zu beantragen.
"permissions": ["tabs"]
Zugriff auf die privilegierten Teile der tabs API beantragen.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
Nur in Manifest V2, um beide obigen Berechtigungen zu beantragen.