host_permissions
Typ | Array |
---|---|
Verpflichtend | Nein |
Manifest-Version | 3 oder höher |
Beispiel |
json
|
Verwenden Sie den Schlüssel host_permissions
, um Zugriff für die APIs in Ihrer Erweiterung anzufordern, die Hostdaten lesen oder ändern, wie z.B. cookies
, webRequest
und tabs
. Dieser Schlüssel ist ein Array von Zeichenketten, und jede Zeichenkette ist eine Anfrage für eine Berechtigung.
Angeforderte Berechtigungen und Benutzeraufforderungen
Benutzer können Host-Berechtigungen gewähren oder widerrufen auf einer Ad-hoc-Basis. Daher behandeln die meisten Browser host_permissions
als optional.
Bei der Installation, wenn Sie Berechtigungen mit diesem Schlüssel anfordern:
- Bis Firefox 126 wurden die angeforderten Host-Berechtigungen einer Manifest V3-Erweiterung nicht im Installationsdialog angezeigt. Ab Firefox 127 werden Host-Berechtigungen, die in
host_permissions
undcontent_scripts
aufgeführt sind, im Installationsdialog angezeigt. Wenn jedoch eine Erweiterungsaktualisierung neue Host-Berechtigungen anfordert, werden diese dem Benutzer nicht angezeigt. Siehe (Firefox-Bug 1893232). - Chrome zeigt die Berechtigungen im Installationsdialog an.
- Safari zeigt die angeforderten Host-Berechtigungen im Installationsdialog nicht an.
Ihre Erweiterung kann überprüfen, ob sie alle erforderlichen Berechtigungen unmittelbar nach der Installation hat, indem sie permissions.contains
verwendet. Sollte sie nicht die notwendigen Berechtigungen haben, kann sie diese mit permissions.request
anfordern. Es kann auch hilfreich sein, einen Einführungsabschnitt bereitzustellen, der erklärt, warum einige Berechtigungen notwendig sind, bevor Sie sie anfordern.
Da die Anfrage zur Gewährung von Host-Berechtigungen die Bereitschaft der Benutzer zur Installation Ihrer Erweiterung beeinflussen kann, lohnt sich eine sorgfältige Überlegung der angeforderten Host-Berechtigungen. Beispielsweise möchten Sie möglicherweise unnötige Host-Berechtigungen vermeiden und könnten Informationen darüber bereitstellen, warum Sie Host-Berechtigungen in der Store-Beschreibung Ihrer Erweiterung anfordern. Der Artikel Request the right permissions bietet weitere Informationen zu den Überlegungen, die Sie anstellen sollten.
Für Informationen, wie Sie Berechtigungsanfragen testen und Vorschauen anzeigen, siehe Test permission requests auf der Extension Workshop-Website.
Format
Host-Berechtigungen werden als Match-Muster spezifiziert, 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 Einschränkungen (jedoch nicht für Anfragen von content scripts, wie es bei Manifest V2 der Fall war).
- die Fähigkeit, tab-spezifische Metadaten ohne die "tabs"-Berechtigung zu lesen, wie die
url
,title
undfavIconUrl
Eigenschaften vontabs.Tab
Objekten. - die Fähigkeit, Skripte programmatisch (mithilfe von
tabs.executeScript()
) 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, Cookies für diesen Host mithilfe der
cookies
API zuzugreifen, solange die"cookies"
API-Berechtigung ebenfalls enthalten ist. - Umgehung des Tracking-Schutzes für Erweiterungsseiten, wo ein Host als vollständige Domain oder mit Platzhaltern angegeben ist.
In Firefox erhalten Erweiterungen Host-Berechtigungen für ihren Ursprung, der folgende 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 abrufen, indem sie extension.getURL()
aufruft:
browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
Beispiel
"host_permissions": ["*://developer.mozilla.org/*"]
Fordern Sie privilegierten Zugriff auf Seiten unter developer.mozilla.org
an.
Beispielerweiterungen
Browser-Kompatibilität
BCD tables only load in the browser