--- title: permissions slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions tags: - Add-ons - Extensions - Permissions - Reference - WebExtensions - manifest.json translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions ---
{{AddonSidebar}}
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.
Comme la demande d'octroi de privilèges peut avoir un impact sur la volonté des utilisateurs d'installer votre extension, la demande de privilèges mérite une attention particulière. Par exemple, vous voulez éviter de demander des permissions inutiles et vous voudrez peut-être fournir des informations sur la raison pour laquelle vous demandez des permissions dans la description du magasin de votre extension. Vous trouverez plus d'informations sur les questions que vous devez prendre en compte dans l'article Demander les bonnes permissions.
La clé peut contenir trois types d'autorisations:
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 :
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/
Où 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 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
clipboardRead
clipboardWrite
contentSettings
contextMenus
contextualIdentities
cookies
debugger
dns
downloads
downloads.open
find
geolocation
history
identity
idle
management
menus
menus.overrideContext
nativeMessaging
notifications
pageCapture
pkcs11
privacy
proxy
search
sessions
storage
tabHide
tabs
theme
topSites
unlimitedStorage
webNavigation
webRequest
webRequestBlocking
Dans la plupart des cas, la permission accorde uniquement l'accès à l'API, avec les exceptions suivantes :
tabs
vous permet d'accéder aux parties privilégiées des API de l'onglet : Tab.url
, Tab.title
, et Tab.faviconUrl
. Dans Firefox, vous avez également besoin de tabs
si vous souhaitez inclure url
dans le paramètre queryInfo
dans tabs.query()
. Le reste de l'API tabs
peut être utilisé sans demander aucune permission.webRequestBlocking
vous permet d'utiliser l'argument "blocage", afin que vous puissiez modifier et annuler les requêtes.downloads.open
vous permet d'utiliser l'API {{WebExtAPIRef("downloads.open()")}}.tabHide
vous permet d'utiliser l'API {{WebExtAPIRef("tabs.hide()")}}.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 :
Les privilèges supplémentaires sont les suivants :
browser.tabs.executeScript
et browser.tabs.insertCSS
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.
Notez que vous ne pouvez accéder qu'à l'onglet ou aux données qui s'y trouvaient au moment de l'interaction de l'utilisateur (par exemple le clic). Lorsque l'onglet actif s'éloigne, par exemple en raison d'un chargement terminé ou d'un autre événement, l'autorisation ne vous donne plus accès à l'onglet.
Habituellement, l'onglet qui est accordé à activeTab
est juste l'onglet actuellement actif, sauf dans un cas. L'API menus
permet à une extension de créer un élément de menu qui s'affiche lorsque le contexte utilisateur clique sur un onglet (c'est-à-dire sur l'élément de l'onglet qui permet à l'utilisateur de passer d'un onglet à un autre). Si l'utilisateur clique sur un tel élément, la permission activeTab
est accordée pour l'onglet sur lequel l'utilisateur a cliqué, même s'il ne s'agit pas de l'onglet actuellement actif (A partir de Firefox 63, {{bug(1446956)}}).
Il existe deux permissions qui permettent aux extensions d'interagir avec le Presse-papiers :
clipboardWrite
: écrivez dans le presse-papiers à l'aide de {{DOMxRef("Clipboard.write()")}}, {{DOMxRef("Clipboard.writeText()")}}, document.execCommand("copy")
ou document.execCommand("cut")
clipboardRead
: lisez le presse-papiers à l'aide de {{DOMxRef("Clipboard.read()")}}, {{DOMxRef("Clipboard.readText()")}} ou document.execCommand("paste")
Voir Intérargir avec le presse-papiers pour tous les détails de ce sujet.***
La permission unlimitedStorage
:
"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.
The compatibility table in this page is generated from structured data. If you'd like to contribute to the data, please check out https://github.com/mdn/browser-compat-data and send us a pull request.
{{Compat("webextensions.manifest.permissions")}}