若要使用大多数扩展程序 API 和功能,您必须在清单的权限字段中声明扩展程序的 intent。扩展程序可以请求使用相应清单键指定的以下类别的权限:
"permissions"
- 包含已知字符串列表中的项。更改可能会触发警告。
"optional_permissions"
- 由用户在运行时(而不是在安装时)授予。
"content_scripts.matches"
- 包含一个或多个匹配模式,允许内容脚本注入到一个或多个主机中。更改可能会触发警告。
"host_permissions"
- 包含一个或多个匹配格式,可授予对一个或多个主机的访问权限。更改可能会触发警告。
"optional_host_permissions"
- 由用户在运行时(而不是在安装时)授予。
如果您的扩展程序遭到恶意软件入侵,权限有助于限制受损程度。在安装之前或运行时,系统会向用户显示一些权限警告,以征求用户同意,如显示警告的权限中所述。
考虑在扩展程序功能允许的情况下尽可能使用可选权限,以便用户在知情的情况下控制对资源和数据的访问权限。
如果 API 需要某项权限,其文档会说明如何声明该 API。如需查看示例,请参阅 Storage API。
清单
以下是清单文件的权限部分示例:
manifest.json:
{
"name": "Permissions Extension",
...
"permissions": [
"activeTab",
"contextMenus",
"storage"
],
"optional_permissions": [
"topSites",
],
"host_permissions": [
"https://www.developer.chrome.com/*"
],
"optional_host_permissions":[
"https://*/*",
"http://*/*"
],
...
"manifest_version": 3
}
主机权限
主机权限允许扩展程序与网址的匹配格式进行交互。有些 Chrome API 除了拥有自己的 API 权限外,还需要主机权限,具体请参阅各参考页面的相关文档。下面是一些示例:
- 从扩展程序 Service Worker 和扩展程序页面发出
fetch()
请求。 - 使用
chrome.tabs
API 读取和查询敏感的标签页属性(网址、标题和 favIconUrl)。 - 以编程方式注入内容脚本。
- 您可以使用
chrome.webRequest
API 监控和控制网络请求。 - 使用
chrome.cookies
API 访问 Cookie。 - 使用
chrome.declarativeNetRequest
API 重定向和修改请求及响应标头。
出现警告的权限
当扩展程序请求多项权限,并且其中许多权限在安装时显示警告时,用户将看到警告列表,如以下示例所示:
如果扩展程序只给出有限的警告或向用户说明权限,那么用户更有可能信任该扩展程序。请考虑实现可选权限或实现功能略低的 API,以避免收到警告性警告。如需了解针对警告的最佳做法,请参阅权限警告指南。在权限参考列表中列出了特定警告及其所适用的权限。
在清单文件的 "host_permissions"
和 "content_scripts.matches"
字段中添加或更改匹配模式也会触发警告。如需了解详情,请参阅更新权限。
允许使用
如果您的扩展程序需要通过 file://
个网址运行或在无痕模式下运行,用户必须在其详情页面上向该扩展程序授予访问权限。您可以在管理您的扩展程序下找到有关如何打开详情页面的说明。
允许访问文件网址和在无痕模式下访问网页
- 右键点击 Chrome 中的扩展程序图标。
选择管理扩展程序。
向下滚动以启用对文件网址的访问权限或无痕模式。
如需检测用户是否已允许访问权限,您可以调用 extension.isAllowedIncognitoAccess()
或 extension.isAllowedFileSchemeAccess()
。