--- title: 权限 - permissions slug: Mozilla/Add-ons/WebExtensions/manifest.json/permissions tags: - 权限 - 附加组件 translation_of: Mozilla/Add-ons/WebExtensions/manifest.json/permissions ---
{{AddonSidebar}}
值类型 | 数组 |
---|---|
强制性 | 不强制 |
示例 |
"permissions": [ "*://developer.mozilla.org/*", "webRequest" ] |
使用permissions 关键字为你的扩展请求特殊的权限。该关键字为一个字符串数列,每个字符串请求一项权限。
如果你使用该关键字请求权限,浏览器可能会在安装该扩展时通知用户该扩展需求某些权限,并询问他们是否愿意给予这些权限。在插件安装之后浏览器也可能允许用户检查扩展的权限。因为要求授予权限可能会影响用户安装你的扩展的意愿,所以请求权限需要特别小心的考虑。举个例子,你想要避免请求不必要的权限,而且可以在你的扩展描述中提供你为何需要某些权限的信息。更多关于这个话题的描述你可以参考这篇提供的文章 请求正确的权限。
该关键字能够包含三种类型的权限:
主机权限使用 match patterns 指定,扩展在每一个表达式指定的网址上请求额外权限。
额外权限包括:
<all_urls>
共用.Firefox浏览器,自56以后的版本,扩展都会自动获取其源的主机权限,如以下形式:
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
60a20a9b-1ad4-af49-9b6c-c64c98c37920
是扩展内部ID。编程时可使用 extension.getURL() 来返回此URL路径:
browser.extension.getURL(""); //
moz-extension://60a20a9b-1ad4-af49-9b6c-c64c98c37920/
API 权限有关键字指定,每个关键字标志着一类WebExtension API 能够被使用。
如下关键字是当前可用的:
activeTab
alarms
bookmarks
browsingData
browserSettings
contextMenus
contextualIdentities
cookies
downloads
downloads.open
find
geolocation
history
identity
idle
management
menus
nativeMessaging
notifications
pkcs11
privacy
proxy
sessions
storage
tabs
theme
topSites
webNavigation
webRequest
webRequestBlocking
在大部分情况下这种权限仅仅允许你访问API,除了以下情况:
tabs
让你可以访问 一部分特权API
: Tab.url
, Tab.title
, and Tab.faviconUrl
。在Firefox中你也需要tabs
来将queryInfo中的url参数加入 tabs.query()
. 剩余的tabs
API能在不要求任何权限的情况被使用webRequestBlocking
允许你是用“blocking”参数,所以你可以 修改或取消requests.downloads.open
让你使用 {{WebExtAPIRef("downloads.open()")}} API.该权限被指定为“activeTab”
。如果一个扩展拥有activeTab
权限,当用户跟该扩展交互时,扩展仅在活动标签被赋予额外权限。
“用户交互”包括:
额外特权包括:
browser.tabs.executeScript
和 browser.tabs.insertCSS
改权限的目的是为了在不给予扩展太多权限的情况下,使得扩展能够应付大部分情况。很多扩展需要在用户要求时,在当前页面做一些处理,比如,考虑一个扩展想要在用户点击一个浏览器按钮时在当前页面运行一个脚本,如果 activeTab 权限不存在,扩展将需要请求主机权限<all_urls>,但是这给予了扩展超过其需要的权限:现在它可以在任何任何时间标签页执行脚本任何次,而不是仅仅在活动标签而且仅仅回应用户的行为。
有两种权限使得WebExtentsion可以跟剪贴板交互:
clipboardWrite
: 使用document.execCommand("copy")
或document.execCommand("cut")
向剪贴板写入clipboardRead
: 使用 document.execCommand("paste")
从剪贴板读取查看 Interact with the clipboard 获取更多
unlimitedStorage
权限:
"permissions": ["*://developer.mozilla.org/*"]
请求 developer.mozilla.org 下的权限访问.
"permissions": ["tabs"]
请求tabs API的权限需要部分的访问。
"permissions": ["*://developer.mozilla.org/*", "tabs"]
请求以上两种访问。
本页的兼容列表是从结构化数据生成的。如果你想参与修改此数据,请参考 https://github.com/mdn/browser-compat-data 并发送pull 请求。
{{Compat("webextensions.manifest.permissions")}}