We're looking for a user researcher to understand the needs of developers and designers. Is this you or someone you know? Check out the post: https://mzl.la/2IGzdXS

Type Tableau
Obligatoire Non
Exemple
"permissions": [
  "*://developer.mozilla.org/*",
  "webRequest"
]

Utilisez la clé permissions pour demander des pouvoirs spéciaux pour votre extension. Cette clé est un ensemble de chaînes, et chaque chaîne est une demande d'autorisation.

Si vous demandez des autorisations avec cette clé, le navigateur peut informer l'utilisateur, au moment de l'installation, que l'extension demande certains privilèges, et lui demande de confirmer qu'il est d'accord. Le navigateur peut également permettre à l'utilisateur d'inspecter les privilèges d'une extension après l'installation.

La clé peut contenir trois types d'autorisations:

  • Les permissions d'hôte
  • Les permissions API
  • La permission activeTab

Les permissions d'hôte

Les permissions d'hôte sont spécifiées comme modèles de correspondance, et chaque modèle identifie un groupe d'URL pour lequel l'extension demande des privilèges supplémentaires. Par exemple, une autorisation d'hôte pourrait être "*://developer.mozilla.org/*".

Les privilèges supplémentaires incluent :

  • XMLHttpRequest et l'accès fetch à ces origines sans restrictions d'origine croisée (même pour les demandes faites à partir de scripts de contenu)
  • La possibilité d'injecter des scripts par programme (à l'aide de tabs.executeScript) dans les pages issues de ces origines
  • La possibilité de recevoir des événements de l'API webRequest pour ces hôtes
  • La possibilité d'accéder aux cookies de cet hôte à l'aide de l'API cookies, tant que la permission de cet API est également incluse.
  • Contourne la protection de suivi si l'hôte est un domaine complet sans caractères génériques. Ne fonctionne pas avec <all_urls>.

Dans Firefox, à partir de la version 56, les extensions reçoivent automatiquement les permissions d'hôte pour leur propre origine, qui se présentent sous la forme :

moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/

60a20a9b-1ad4-af49-9b6c-c64c98c37920 est l'ID interne de l'extension. L'extension peut obtenir cette URL par programmation en appelant extension.getURL() :

browser.extension.getURL("");
// moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/

Les permissions API

Les autorisations API sont spécifiées comme des mots-clés, et chaque mot clé nomme une API WebExtension que l'extension souhaite utiliser.

Les mots clés suivants sont actuellement disponibles:

  • activeTab
  • alarms
  • background
  • bookmarks
  • browserSettings
  • browsingData
  • contentSettings
  • contextMenus
  • contextualIdentities
  • cookies
  • debugger
  • downloads
  • downloads.open
  • find
  • geolocation
  • history
  • identity
  • idle
  • management
  • menus
  • nativeMessaging
  • notifications
  • pageCapture
  • pkcs11
  • privacy
  • proxy
  • sessions
  • storage
  • tabHide
  • tabs
  • theme
  • topSites
  • webNavigation
  • webRequest
  • webRequestBlocking

Dans la plupart des cas, la permission accorde uniquement l'accès à l'API, avec les exceptions suivantes :

Permission activeTab

Cette autorisation est spécifiée comme " activeTab " (onglet actif). Si une extension possède la permission activeTab , lorsque l'utilisateur interagit avec l'extension, celle-ci reçoit des privilèges supplémentaires uniquement pour l'onglet actif.

"L'interaction utilisateur" comprend :

  • L'utilisateur clique sur l'action du navigateur de l'extension ou sur l'action de la page
  • L'utilisateur sélectionne un élément de son menu contextuel
  • L'utilisateur active un raccourci clavier défini par l'extension

Les privilèges supplémentaires sont les suivants :

  • La capacité d'injecter du JavaScript ou du CSS dans l'onglet par programme, en utilisant browser.tabs.executeScript et  browser.tabs.insertCSS
  • L'accès aux parties privilégiées des onglets de l'API pour l'onglet actuel : Tab.url, Tab.title et Tab.faviconUrl.

L'objectif de cette permission est de permettre aux extensions de réaliser une utilisation courante, sans avoir à leur accorder de permissions très puissantes. Beaucoup d'extensions veulent "faire quelque chose à la page courante quand l'utilisateur le demande". Par exemple, considérez une extension qui veut exécuter un script dans la page courante quand l'utilisateur clique sur une action de navigateur. Si la permission activeTab n'existait pas, l'extension devrait demander une permission d'hôte <all_urls>. Mais cela donnerait à l'extension plus de puissance que nécessaire : elle pourrait désormais exécuter des scripts dans n'importe quel onglet, à tout moment, plutôt que simplement dans l'onglet actif et juste en réponse à une action de l'utilisateur.

Accès au presse-papiers

Il existe deux permissions qui permettent aux extensions d'interagir avec le Presse-papiers :

  • clipboardWrite: écrivez dans le presse-papiers à l'aide de document.execCommand("copy") ou document.execCommand("cut")
  • clipboardRead: lisez le presse-papiers à l'aide de document.execCommand("paste")

Voir Intérargir avec le presse-papiers pour tous les détails de ce sujet.

Exemple

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

Demande d'accès privilégié aux pages sous developer.mozilla.org.

  "permissions": ["tabs"]

Demande d'accès aux éléments privilégiés de l'API tabs.

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

Demande des deux permissions ci-dessus.

Compatibilité du navigateur

ChromeEdgeFirefoxFirefox for AndroidOpera
Support simple Oui Oui4848 Oui
activeTab Oui Non4848 Oui
alarms Oui Non4548 Oui
background Oui Non Non Non Oui
bookmarks Oui1545 Non Oui
browserSettings Non Non5656 Non
browsingData Oui Non5356 Oui
clipboardRead Oui Non5454 Oui
clipboardWrite Oui Non5151 Oui
contentSettings Oui Non Non Non Oui
contextMenu Oui Oui551 Non Oui
contextualIdentities Non Non5353 Non
cookies Oui Oui4548 Oui
debugger Oui Non Non Non Oui
downloads Oui Non4748 Oui
downloads.open Oui Non4848 Oui
find Non Non57 Non Non
geolocation Oui Oui5454 Oui
history Oui Non49 Non Oui
identity Oui Non53 Non Oui
idle Oui154548 Oui
management Oui Non5151 Oui
menu Non Non53 Non Non
nativeMessaging291550 Non16
notifications Oui Non4548 Oui
pageCapture Oui Non Non Non Oui
pkcs11 Non Non58 Non Non
privacy Oui Non5454 Oui
proxy Non Non5555 Non
sessions Oui Non52 Non Oui
storage Oui Oui4548 Oui
tabs Oui Oui4554 Oui
theme Non Non55 Non Non
topSites Oui Non5252 Oui
unlimitedStorage Oui Oui5656 Non
webNavigation Oui Oui454817
webRequest Oui Oui4548 Oui
webRequestBlocking Oui Oui4548 Oui

1. Available as an alias to the menus permission.

Étiquettes et contributeurs liés au document

Étiquettes : 
Contributeurs à cette page : hellosct1, loella16, lotfire24
Dernière mise à jour par : hellosct1,