“activeTab”权限

"activeTab" 权限允许扩展程序在 用户调用该扩展程序 - 例如,点击其操作。访问该标签页 有效期在用户位于相应页面时有效,在用户离开页面或关闭标签页时失效。 例如,如果用户通过 https://example.com 调用扩展程序,然后 转到 https://example.com/foo,该扩展程序仍能继续访问该网页。如果 当用户前往 https://chromium.org 时,相关访问权限会被撤消。

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

不使用 "activeTab" 时:

无 activityTab

以及 "activeTab"

使用 activityTab

示例

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

manifest.json:

{
  "name": "Page Redder",
  "version": "2.0",
  "permissions": [
    "activeTab",
    "scripting"
  ],
  "background": {
    "service_worker": "service-worker.js"
  },
  "action": {
    "default_title": "Make this page red"
  },
  "manifest_version": 3
}

service-worker

function reddenPage() {
  document.body.style.backgroundColor = 'red';
}

chrome.action.onClicked.addListener((tab) => {
  if (!tab.url.includes('chrome://')) {
    chrome.scripting.executeScript({
      target: { tabId: tab.id },
      func: reddenPage
    });
  }
});

设计初衷

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

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

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

什么是“activeTab”允许

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

调用 activityTab

以下用户手势可启用 "activeTab" 权限: