activeTab 权限

activeTab 权限允许扩展程序在 用户调用相应扩展程序,例如点击浏览器操作即可。访问该标签页 有效期在用户位于相应页面时有效,在用户离开页面或关闭标签页时失效。

这是 <all_urls> 的多种用法,但会显示无警告消息。 :

注意:从 M72 开始,系统会授予 activeTab 权限,直到用户转到 不同来源。也就是说,如果用户在 https://example.com 上调用扩展程序,然后 转到 https://example.com/foo,该扩展程序仍能继续访问该网页。如果 当用户前往 https://chromium.org 时,相关访问权限会被撤消。

不使用 activeTab 时:

无 activityTab

以及 activeTab

使用 activityTab

示例

请参阅 Page Redder 扩展程序示例:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  },
  "browser_action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 2
}
// Called when the user clicks on the browser action.
chrome.browserAction.onClicked.addListener(function(tab) {
  // No tabs or host permissions needed!
  console.log('Turning ' + tab.url + ' red!');
  chrome.tabs.executeScript({
    code: 'document.body.style.backgroundColor="red"'
  });
});

设计初衷

假设有一个包含浏览器操作上下文菜单项的网页剪辑扩展程序。这个 可能只需要在用户点击其浏览器操作或 。

如果没有 activeTab,此扩展程序将需要请求对每个网站的完整、永久访问权限, 这样,在用户调用它时,它就可以正常运行。这里有很多 如果扩展程序遭到入侵,攻击者 获取该扩展程序拥有的所有内容

相比之下,具有 activeTab 权限的扩展程序仅在响应时获取对标签页的访问权限 显式用户手势。如果扩展程序遭到入侵,攻击者将需要等待 用户在获得访问权限之前调用该扩展程序。并且该访问权限仅在相应标签页 已导航或已关闭。

activityTab 允许的功能

为标签页启用 activeTab 权限后,扩展程序可以:

  • 调用该标签页上的 tabs.executeScripttabs.insertCSS
  • 通过会返回 tabs.Tab 对象的 API 获取相应标签页的网址、标题和网站图标 (实际上,activeTab 会临时授予 tabs 权限)。
  • 使用 webRequest 拦截标签页中发送到标签页主框架源的网络请求 API。该扩展程序会暂时获取标签页主框架源的主机权限。

调用 activityTab

以下用户手势可启用 activeTab