更新清单

将 V2 清单转换为 V3 清单

Manifest V3 和 Manifest V2 对 manifest.json 文件的格式要求略有不同。本页面介绍了仅影响 manifest.json 文件的更改。但是,对脚本和网页的许多更改也需要对清单进行更改。需要执行这些更改的迁移任务会涵盖这些更改。

更改清单版本号

"manifest_version" 字段的值从 2 更改为 3。

Manifest V2
{
  ...
  "manifest_version": 2
  ...
}
Manifest V3
{
  ...
  "manifest_version": 3
  ...
}

更新主机权限

Manifest V3 中的主机权限是一个单独的字段;您无需在 "permissions""optional_permissions" 中指定这些权限。

内容脚本仍位于 "content_scripts.matches" 下。如需了解 "content_scripts.matches",请参阅使用静态声明注入

Manifest V2
{
  ...
  "permissions": [
    "tabs",
    "bookmarks",
    "https://www.blogger.com/",
  ],
  "optional_permissions": [
    "unlimitedStorage",
    "*://*/*",
  ]
  ...
}
Manifest V3
{
  ...
  "permissions": [
    "tabs",
    "bookmarks"
  ],
  "optional_permissions": [
    "unlimitedStorage"
  ],
  "host_permissions": [
    "https://www.blogger.com/",
  ],
  "optional_host_permissions": [
    "*://*/*",
  ]
  ...
}

更新 Web 可访问资源

网络可访问资源是指扩展程序内可供网页或其他扩展程序访问的文件。如 Manifest V2 中所实现的那样,如果扩展程序选择公开资源,则网站和攻击者可以检测到 "web_accessible_resources" 字段。这为数字“指纹”收集或意外的资源访问创造了机会。

Manifest V3 通过限制哪些网站和扩展程序可以访问您的扩展程序中的资源来限制公开范围。现在,您可以提供对象数组,其中每个对象都会将一组资源映射到一组网址或扩展程序 ID,而不是像之前那样提供文件列表。

以下示例比较了 Manifest V2 和 Manifest V3 的 Web 可访问资源。在 Manifest V2 中,默认情况下,所有网站均可访问指定的资源。在如下所示的 Manifest V3 代码中,这些资源仅供 https://example.com 使用,而只有某些映像可供所有网站使用。

如需了解详情,请参阅网络可访问资源匹配模式

Manifest V2
{
  ...
  "web_accessible_resources": [
    "images/*",
    "style/extension.css",
    "script/extension.js"
  ],
  ...
}
Manifest V3
{
  ...
    "web_accessible_resources": [
    {
      "resources": [
        "images/*"
      ],
      "matches": [
        "*://*/*"
      ]
    },
    {
      "resources": [
        "style/extension.css",
        "script/extension.js"
      ],
      "matches": [
        "https://example.com/*"
      ]
    }
  ],
  ...
}