如需使用大多数扩展程序 API 和功能,您必须在清单的权限字段中声明扩展程序的用途。扩展程序可以请求以下类别的权限,这些权限使用相应的清单键指定:
"permissions"- 包含来自已知字符串列表的项。更改可能会触发警告。
"optional_permissions"- 由用户在运行时授予,而不是在安装时授予。
"content_scripts.matches"- 包含一个或多个匹配模式,用于允许内容脚本注入到一个或多个主机中。更改可能会触发警告。
"host_permissions"- 包含一个或多个匹配模式,用于授予对一个或多个主机的访问权限。更改可能会触发警告。
"optional_host_permissions"- 由用户在运行时授予,而不是在安装时授予。
如果扩展程序受到恶意软件的侵扰,权限有助于限制损害。某些权限警告会在安装前或运行时显示给用户,以征求用户同意,详情请参阅带有警告的权限。
如果扩展程序的功能允许,请考虑使用可选权限,以便用户在知情的情况下控制对资源和数据的访问权限。
如果某个 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
}
主机权限
主机权限允许扩展程序与网址的匹配模式进行交互。除了自身的 API 权限之外,某些 Chrome API 还需要主机权限,这些权限记录在每个参考页面上。下面是一些示例:
- 从扩展程序 Service Worker 和扩展程序页面发出
fetch()请求。 - 使用
chrome.tabsAPI 读取和查询敏感的 标签页属性(网址、标题和 favIconUrl)。 - 以编程方式注入内容脚本。
- 使用
chrome.webRequestAPI 监控和控制网络请求。 - 使用
chrome.cookiesAPI 访问 Cookie。 - 使用
chrome.declarativeNetRequestAPI 重定向和修改请求及响应标头。
附带警告的权限
如果扩展程序请求了多项权限,并且其中许多权限在安装时会显示警告,那么用户会看到一个警告列表,如下例所示:

如果扩展程序的警告数量有限,或者向用户说明了权限,用户就更可能信任该扩展程序。请考虑实现可选权限或功能较弱的 API,以避免出现令人不安的警告。如需了解有关警告的最佳实践,请参阅权限警告指南。权限参考列表中列出了具体的警告以及它们所适用的权限。
在清单文件的 "host_permissions" 和 "content_scripts.matches" 字段中添加或更改匹配模式也会触发警告。如需了解详情,请参阅更新权限。
允许使用
如果您的扩展程序需要在 file:// 网址上运行或在无痕模式下运行,用户必须在扩展程序的详情页面上授予相应访问权限。您可以在管理扩展程序下找到有关如何打开详情页面的说明。
允许访问文件网址和无痕页面
- 右键点击 Chrome 中的扩展程序图标。
选择管理扩展程序。
扩展程序菜单 向下滚动以允许访问文件网址或无痕模式。
已启用对文件网址和无痕模式的访问权限。
如需检测用户是否已允许访问,您可以调用 extension.isAllowedIncognitoAccess() 或 extension.isAllowedFileSchemeAccess()。