Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

permissions

Typ Array
Verpflichtend Nein
Manifest Version 2 oder höher
Beispiel
json
"permissions": [
  "webRequest"
]

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_permissions Manifest-Schlüssel angegeben.)
  • API-Berechtigungen
  • die activeTab Berechtigung

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_permissions Manifest-Schlüssel.
  • Manifest V3 oder höher:

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, title und favIconUrl Eigenschaften von tabs.Tab Objekten
  • 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 webRequest API für diese Hosts zu empfangen
  • die Möglichkeit, auf Cookies für diesen Host mithilfe der cookies API 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:

  • activeTab
  • alarms
  • background
  • bookmarks
  • browserSettings
  • browsingData
  • captivePortal
  • clipboardRead
  • clipboardWrite
  • contentSettings
  • contextMenus
  • contextualIdentities
  • cookies
  • debugger
  • declarativeNetRequest
  • declarativeNetRequestFeedback
  • declarativeNetRequestWithHostAccess
  • devtools (Diese Berechtigung wird implizit gewährt, wenn der devtools_page Manifest-Schlüssel vorhanden ist.)
  • dns
  • downloads
  • downloads.open
  • find
  • geolocation
  • history
  • identity
  • idle
  • management
  • menus
  • menus.overrideContext
  • nativeMessaging
  • notifications
  • pageCapture
  • pkcs11
  • privacy
  • proxy
  • scripting
  • search
  • sessions
  • storage
  • tabGroups
  • tabHide
  • tabs
  • theme
  • topSites
  • unlimitedStorage
  • userScripts (siehe userScripts Berechtigung)
  • webNavigation
  • webRequest
  • webRequestAuthProvider (Manifest V3 und höher)
  • webRequestBlocking
  • webRequestFilterResponse
  • webRequestFilterResponse.serviceWorkerScript

In den meisten Fällen gewährt die Berechtigung nur Zugriff auf die API, mit folgenden Ausnahmen:

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.title und Tab.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") oder document.execCommand("cut").

clipboardRead

Lesen aus der Zwischenablage mit Clipboard.read(), Clipboard.readText() oder document.execCommand("paste").

Siehe Mit der Zwischenablage interagieren für weitere Details.

Unbegrenzter Speicher

Die unlimitedStorage Berechtigung:

  • Ermöglicht Erweiterungen, ein von der storage.local API 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

json
 "permissions": ["*://developer.mozilla.org/*"]

Verlangen Sie in Manifest V2 nur privilegierten Zugriff auf Seiten unter developer.mozilla.org.

json
  "permissions": ["tabs"]

Fordern Sie den Zugriff auf die privilegierten Teile der tabs API an.

json
  "permissions": ["*://developer.mozilla.org/*", "tabs"]

Fordern Sie in Manifest V2 sowohl die obigen Berechtigungen an.

Browser-Kompatibilität