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 über diesen Schlüssel anfordern, kann der Browser den Benutzer bei der Installation darauf hinweisen, dass die Erweiterung bestimmte Berechtigungen anfordert, und ihn bitten zu bestätigen, dass er mit der Vergabe 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 Vergabe von Berechtigungen die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, sollte die Anforderung von Berechtigungen sorgfältig überlegt werden. Beispielsweise sollten Sie vermeiden, unnötige Berechtigungen anzufordern, und können in Betracht ziehen, Informationen darüber bereitzustellen, warum Sie Berechtigungen in der Store-Beschreibung Ihrer Erweiterung anfordern. Weitere Informationen zu den Überlegungen finden Sie in dem Artikel Request the right permissions.
Informationen zum Testen und Vorschauen von Berechtigungsanforderungen 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_permissions
-Manifests angegeben.) - API-Berechtigungen
- die
activeTab
-Berechtigung
Host-Berechtigungen
Hinweis: Die Art und Weise, wie Sie Host-Berechtigungen anfordern, hängt davon ab, ob Sie sie zur Installationszeit oder zur Laufzeit und welche Manifestversion Ihre Erweiterung verwendet, wünschen.
- Manifest V2:
- Berechtigungsanfrage zur Installationszeit mit diesem (
permissions
) Manifest-Schlüssel. - Berechtigungsanfrage zur Laufzeit mit dem
optional_permissions
Manifest-Schlüssel.
- Berechtigungsanfrage zur Installationszeit mit diesem (
- Manifest V3 oder höher:
- Berechtigungsanfrage zur Installationszeit mit dem
host_permissions
Manifest-Schlüssel. - Berechtigungsanfrage zur Laufzeit mit dem
optional_host_permissions
Manifest-Schlüssel.
- Berechtigungsanfrage zur Installationszeit mit dem
Host-Berechtigungen werden als Match Patterns angegeben, und jedes Muster identifiziert eine Gruppe von URLs, für die die Erweiterung zusätzliche Berechtigungen anfordert. Beispielsweise könnte eine Host-Berechtigung "*://developer.mozilla.org/*"
lauten.
Die zusätzlichen Berechtigungen umfassen:
- XMLHttpRequest und fetch-Zugriff auf diese Ursprünge ohne Cross-Origin-Einschränkungen (auch für Anfragen, die von Content-Skripten gemacht werden)
- die Fähigkeit, tab-spezifische Metadaten ohne die "tabs"-Berechtigung auszulesen, wie z.B. die
url
- ,title
- undfavIconUrl
-Eigenschaften vontabs.Tab
-Objekten - die Fähigkeit, Content-Skripte und Stile programmatisch in Seiten einzufügen, die von diesen Ursprüngen bereitgestellt werden.
- die Fähigkeit, Ereignisse von der
webRequest
-API für diese Hosts zu empfangen - die Fähigkeit, auf Cookies für diesen Host über die
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 Domäne oder mit Wildcards angegeben ist. Content-Skripte können den Tracking-Schutz jedoch nur für Hosts umgehen, die mit einer vollständigen Domäne angegeben sind.
Ab Version 56 von Firefox erhalten Erweiterungen automatisch Host-Berechtigungen für ihren eigenen Ursprung, der in der Form ist:
moz-extension:/
wobei 60a20a9b-1ad4-af49-9b6c-c64c98c37920
die interne ID der Erweiterung ist. Die Erweiterung kann diese URL programmatisch durch den 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:
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 derdevtools_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
tabHide
tabs
theme
topSites
unlimitedStorage
- 'userScripts' (siehe userScripts permission)
webNavigation
webRequest
webRequestAuthProvider
(Manifest V3 und höher)webRequestBlocking
webRequestFilterResponse
webRequestFilterResponse.serviceWorkerScript
In den meisten Fällen gewährt die Berechtigung einfach Zugang zur API, mit den folgenden Ausnahmen:
-
tabs
gibt Zugang zu privilegierten Teilen dertabs
API ohne die Notwendigkeit für Host-Berechtigungen:Tab.url
,Tab.title
undTab.faviconUrl
.- In Firefox 85 und früher benötigen Sie auch
tabs
, wenn Sieurl
imqueryInfo
-Parameter zutabs.query()
einfügen möchten. Der Rest dertabs
API kann verwendet werden, ohne eine 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
-
webRequestBlocking
ermöglicht die Verwendung des"blocking"
-Arguments, sodass Sie Anfragen modifizieren und abbrechen können. -
downloads.open
ermöglicht die Verwendung derdownloads.open()
API. -
tabHide
ermöglicht die Verwendung dertabs.hide()
API.
activeTab-Berechtigung
Diese Berechtigung wird als "activeTab"
angegeben. Wenn eine Erweiterung die activeTab
-Berechtigung hat, werden der Erweiterung beim Benutzerinteraktion zusätzliche Berechtigungen nur für den aktiven Tab gewährt.
"Benutzerinteraktion" schließt ein:
- Der Benutzer klickt auf die browser action oder die page action der Erweiterung
- der Benutzer wählt ihren Eintrag im Kontextmenü aus
- der Benutzer aktiviert eine von der Erweiterung definierte Tastenkombination
Die zusätzlichen Berechtigungen sind:
- Die Fähigkeit, JavaScript oder CSS programmatisch in den Tab zu injizieren (siehe Loading content scripts).
- Zugriff auf die privilegierten Teile der tabs API für den aktuellen Tab:
Tab.url
,Tab.title
undTab.faviconUrl
.
Die Absicht dieser Berechtigung besteht darin, Erweiterungen zu ermöglichen, einen häufigen Anwendungsfall zu erfüllen, ohne ihnen sehr mächtige Berechtigungen zu gewähren. Viele Erweiterungen möchten "etwas auf der aktuellen Seite machen, wenn der Benutzer es anfordert".
Betrachten Sie beispielsweise eine Erweiterung, die ein Skript auf der aktuellen Seite ausführen möchte, 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. Dies würde der Erweiterung jedoch mehr Macht verleihen, als sie benötigt: Sie könnte jetzt jederzeit Skripte in jedem Tab ausführen, statt nur im aktiven Tab und nur als Reaktion auf eine Benutzeraktion.
Hinweis: Sie können nur auf die Tab-/Daten zugreifen, die vorhanden waren, als die Benutzerinteraktion stattfand (z.B. der Klick). Wenn der aktive Tab weg navigiert (z.B. durch Abschluss des Ladevorgangs oder ein anderes Ereignis), gewährt die Berechtigung keinen Zugriff mehr auf den Tab.
Die activeTab
-Berechtigung ermöglicht den Skript-Zugriff auf die oberste Ebene der Tab-Seite und gleichmäßig Ursprungs-Frames. Das Ausführen von Skripten oder Ändern von Stilen in cross-origin Frames kann zusätzliche Host-Berechtigungen erfordern. Selbstverständlich gelten auch Einschränkungen und Beschränkungen in Bezug auf bestimmte Sites und URI-Schemata.
In der Regel ist der Tab, der activeTab
gewährt wird, nur der derzeit aktive Tab, außer in einem Fall. Die menus
API ermöglicht es einer Erweiterung, ein Menüobjekt zu erstellen, das angezeigt wird, wenn der Benutzer per Rechtsklick auf einen Tab klickt (d.h. auf das Element im Tab-Streifen, mit dem der Benutzer von einem Tab zu einem anderen wechseln kann).
Wenn der Benutzer auf einen solchen Eintrag klickt, wird die activeTab
-Berechtigung für den Tab gewährt, auf den der Benutzer geklickt hat, selbst wenn es nicht der derzeit aktive Tab ist (ab Firefox 63, Firefox Bug 1446956).
Zwischenablagenzugriff
Es gibt zwei Berechtigungen, die es der Erweiterung ermöglichen, mit der Zwischenablage zu interagieren:
clipboardWrite
-
In die Zwischenablage schreiben mit
Clipboard.write()
,Clipboard.writeText()
,document.execCommand("copy")
oderdocument.execCommand("cut")
. clipboardRead
-
Aus der Zwischenablage lesen mit
Clipboard.read()
,Clipboard.readText()
oderdocument.execCommand("paste")
.
Siehe Interact with the clipboard für weitere Details.
Unbegrenzter Speicher
Die unlimitedStorage
-Berechtigung:
- Ermöglicht Erweiterungen, jede von der
storage.local
API auferlegte Kontingent zu überschreiten. - In Firefox ermöglicht es Erweiterungen, eine "persistente" IndexedDB-Datenbank zu erstellen, ohne dass der Browser den Benutzer um Erlaubnis beim Erstellen der Datenbank bittet.
Beispiele
"permissions": ["*://developer.mozilla.org/*"]
Nur in Manifest V2, verlangen 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, fordern Sie beide oben genannten Berechtigungen an.