activeTab 权限

activeTab 权限可让扩展程序在用户调用扩展程序时(例如,通过点击其浏览器操作)临时访问当前活跃的标签页。用户访问该标签页时,对标签页的访问权限会一直有效;当用户离开标签页或关闭标签页时,访问权限便会撤消。

这可用作 <all_urls> 的许多用法的替代方案,但会在安装过程中显示无警告消息

注意:从 M72 开始,系统将授予 activeTab 权限,直到用户导航到其他源站。也就是说,如果用户在 https://example.com 上调用该扩展程序,然后导航到 https://example.com/foo,该扩展程序就可以继续访问该网页。如果用户前往 https://chromium.org,则访问权限会被撤消。

不使用 activeTab

不使用 ActiveTab

使用 activeTab 进行更新:

使用 ActiveTab

示例

请参阅 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 权限的扩展程序仅在响应显式用户手势时才会获取对标签页的访问权限。如果扩展程序遭到破解,攻击者需要等待用户调用扩展程序才能获得访问权限。而且该访问权限仅在标签页用户导航或关闭之前一直有效。

ActiveTab 允许执行哪些操作

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

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

正在调用 ActiveTab

以下用户手势可启用 activeTab