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, 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 Berechtigungen anfordert, und ihn bitten, zu bestätigen, dass er mit der Gewährung dieser Berechtigungen einverstanden ist. Der Browser kann dem Benutzer auch erlauben, die Berechtigungen einer Erweiterung nach der Installation zu überprüfen. Da die Anfrage zur Gewährung von Berechtigungen die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, lohnt sich eine sorgfältige Abwägung der angeforderten Berechtigungen. Beispielsweise möchten Sie unnötige Berechtigungen vermeiden und könnten Informationen darüber bereitstellen, warum Sie Berechtigungen in der Storebeschreibung Ihrer Erweiterung anfordern. Mehr Informationen zu diesen Überlegungen finden Sie im Artikel Die richtigen Berechtigungen anfordern.
Informationen zum Testen und Vorabprüfen von Berechtigungsanfragen finden Sie unter Berechtigungsanfragen testen auf der Extension Workshop-Website.
Der Schlüssel kann drei Arten von Berechtigungen enthalten:
- Host-Berechtigungen (Nur Manifest V2, Host-Berechtigungen sind im Manifest-Schlüssel
host_permissions
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 diese zur Installationszeit oder zur Laufzeit benötigen und welche Manifest-Version Ihre Erweiterung verwendet.
- Manifest V2:
- Installationsanfrage mit diesem (
permissions
) Manifest-Schlüssel. - Laufzeitanfrage mit dem Manifest-Schlüssel
optional_permissions
.
- Installationsanfrage mit diesem (
- Manifest V3 oder höher:
- Installationsanfrage mit dem Manifest-Schlüssel
host_permissions
. - Laufzeitanfrage mit dem Manifest-Schlüssel
optional_host_permissions
.
- Installationsanfrage mit dem Manifest-Schlüssel
Host-Berechtigungen werden als Matchmuster angegeben, und jedes Muster identifiziert eine Gruppe von URLs, für die die Erweiterung zusätzliche Berechtigungen anfordert. Ein Host-Berechtigungsmuster könnte z.B. "*://developer.mozilla.org/*"
sein.
Die zusätzlichen Berechtigungen umfassen:
- Zugriff auf XMLHttpRequest und fetch für diese Ursprünge ohne Cross-Origin-Beschränkungen (auch für Anfragen, die von Inhalts-Skripts gemacht werden)
- die Möglichkeit, tabspezifische Metadaten ohne die "tabs"-Berechtigung auszulesen, wie die Eigenschaften
url
,title
undfavIconUrl
vontabs.Tab
Objekten - die Möglichkeit, Inhalts-Skripte und Stile programmgesteuert in Seiten mit diesen Ursprüngen zu injizieren.
- die Möglichkeit, Ereignisse von der
webRequest
-API für diese Hosts zu empfangen - die Möglichkeit, über die
cookies
-API auf Cookies dieses Hosts zuzugreifen, solange auch die "cookies"-API-Berechtigung enthalten ist. - Umgehung des Trackingschutzes für Erweiterungsseiten, bei denen ein Host als vollständige Domain oder mit Platzhaltern angegeben ist. Inhalts-Skripte können jedoch nur den Trackingschutz für Hosts umgehen, die mit einer vollständigen Domain angegeben sind.
In Firefox erhalten Erweiterungen ab Version 56 automatisch Host-Berechtigungen für ihren eigenen Ursprung, welcher 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 programmgesteuert durch den Aufruf von extension.getURL()
abrufen:
browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
API-Berechtigungen
API-Berechtigungen werden als Schlüsselwörter spezifiziert, und jedes Schlüsselwort benennt eine WebExtension-API, die die Erweiterung verwenden möchte.
Diese Berechtigungen sind in Manifest V2 und darüber verfügbar, sofern nicht anders angegeben:
activeTab
alarms
background
bookmarks
browserSettings
browsingData
captivePortal
clipboardRead
clipboardWrite
contentSettings
contextMenus
contextualIdentities
cookies
debugger
declarativeNetRequest
declarativeNetRequestFeedback
declarativeNetRequestWithHostAccess
devtools
(Diese Berechtigung wird implizit erteilt, wenn der Manifest-Schlüsseldevtools_page
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
tabHide
tabs
theme
topSites
unlimitedStorage
webNavigation
webRequest
webRequestAuthProvider
(Manifest V3 und höher)webRequestBlocking
webRequestFilterResponse
webRequestFilterResponse.serviceWorkerScript
In den meisten Fällen gewährt die Berechtigung einfach den Zugriff auf die API, mit den folgenden Ausnahmen:
-
tabs
ermöglicht den Zugriff auf privilegierte Teile dertabs
-API, ohne dass Host-Berechtigungen erforderlich sind:Tab.url
,Tab.title
, undTab.faviconUrl
.- In Firefox 85 und älter benötigen Sie auch
tabs
, wenn Sieurl
imqueryInfo
-Parameter fürtabs.query()
einfügen möchten. Der Rest dertabs
-API kann ohne Anforderung einer Berechtigung verwendet werden. - Ab Firefox 86 und Chrome 50 können passende Host-Berechtigungen anstelle der "tabs"-Berechtigung verwendet werden.
- In Firefox 85 und älter benötigen Sie auch
-
webRequestBlocking
ermöglicht Ihnen die Verwendung des Arguments"blocking"
, sodass Sie Anfragen ändern und abbrechen können. -
downloads.open
ermöglicht Ihnen die Verwendung der APIdownloads.open()
. -
tabHide
ermöglicht Ihnen die Verwendung der APItabs.hide()
.
activeTab Permission
Diese Berechtigung wird als "activeTab"
spezifiziert. Wenn eine Erweiterung die activeTab
-Berechtigung hat, wird der Erweiterung, wenn der Benutzer mit der Erweiterung interagiert, genau für diesen aktiven Tab zusätzliche Berechtigungen erteilt.
"Benutzerinteraktion" umfasst:
- der Benutzer klickt auf die Schaltfläche der Browseraktion oder Seitwärtsaktion der Erweiterung
- der Benutzer wählt das Kontextmenüelement der Erweiterung aus
- der Benutzer aktiviert eine von der Erweiterung definierte Tastenkombination
Die zusätzlichen Berechtigungen sind:
- Die Möglichkeit, JavaScript oder CSS in den Tab programmgesteuert zu injizieren (siehe Inhalts-Skripte laden).
- Zugriff auf die privilegierten Teile der Tabs-API für den aktuellen Tab:
Tab.url
,Tab.title
, undTab.faviconUrl
.
Ziel dieser Berechtigung ist es, Erweiterungen zu ermöglichen, einen häufigen Anwendungsfall zu erfüllen, ohne ihnen sehr mächtige Berechtigungen zu geben. Viele Erweiterungen möchten "etwas mit der aktuellen Seite machen, wenn der Benutzer es verlangt".
Ein Beispiel: Eine Erweiterung möchte ein Skript auf der aktuellen Seite ausführen, wenn der Benutzer auf eine Browseraktion klickt. Wenn die activeTab
-Berechtigung nicht existieren würde, müsste die Erweiterung die Host-Berechtigung <all_urls>
anfordern. Aber das gäbe der Erweiterung mehr Macht, als sie benötigt: Sie könnte nun Skripte in jedem Tab zu jeder Zeit ausführen, anstatt nur im aktiven Tab und nur als Antwort auf eine Benutzeraktion.
Hinweis: Sie können nur auf den Tab/die Daten zugreifen, die dort waren, als die Benutzerinteraktion stattgefunden hat (z.B. der Klick). Wenn der aktive Tab weg navigiert (z.B. durch das Beenden des Ladevorgangs oder eines anderen Ereignisses), gewährt die Berechtigung keinen Zugriff mehr auf den Tab.
Die activeTab
-Berechtigung ermöglicht Skriptzugriff auf die Seite des obersten Tabs und gleichartigen Rahmen. Das Ausführen von Skripten oder Ändern von Stilen innerhalb cross-origin Rahmen kann zusätzliche Host-Berechtigungen erfordern. Natürlich gelten auch die Einschränkungen und Beschränkungen, die sich auf bestimmte Sites und URI-Schemata beziehen.
Normalerweise ist der Tab, dem activeTab
gewährt wird, einfach der aktuell aktive Tab, außer in einem Fall. Die menus
-API ermöglicht es einer Erweiterung, ein Menüelement zu erstellen, das angezeigt wird, wenn der Benutzer auf einen Tab kontextklickt (d.h. auf das Element in der Tab-Leiste, das es dem Benutzer ermöglicht, von einem Tab zum anderen zu wechseln).
Wenn der Benutzer auf ein solches Element klickt, wird die activeTab
-Berechtigung für den Tab gewährt, auf den der Benutzer geklickt hat, auch wenn es nicht der derzeit aktive Tab ist (ab Firefox 63, Firefox-Bug 1446956).
Zwischenablagezugriff
Es gibt zwei Berechtigungen, die der Erweiterung den Zugriff auf die Zwischenablage erlauben:
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 Interagieren mit der Zwischenablage.
Unbegrenzter Speicher
Die unlimitedStorage
-Berechtigung:
- Ermöglicht Erweiterungen das Überschreiten jeder vom
storage.local
-API auferlegten Quota - Ermöglicht es Erweiterungen in Firefox, eine "persistente" IndexedDB-Datenbank ohne Aufforderung an den Benutzer zur Erteilung von Berechtigungen zu erstellen, wenn die Datenbank erstellt wird.
Beispiel
"permissions": ["*://developer.mozilla.org/*"]
Nur in Manifest V2, beantragen Sie privilegierten Zugriff auf Seiten unter developer.mozilla.org
.
"permissions": ["tabs"]
Fordern Sie Zugriff auf die privilegierten Teile der tabs
-API an.
"permissions": ["*://developer.mozilla.org/*", "tabs"]
Nur in Manifest V2, beantragen Sie beide der oben genannten Berechtigungen.
Browser-Kompatibilität
BCD tables only load in the browser