清单 - 网络可访问的资源

可通过 Web 访问的资源是指扩展程序中可通过网页或其他资源 。附加信息通常会使用此功能显示需要 但扩展程序捆绑包中包含的任何资源均可设为网页可访问。

默认情况下,所有资源都无法在网络上访问,因为恶意网站可以利用该漏洞指纹记录用户已安装的扩展程序 或利用已安装的扩展程序中的漏洞(例如 XSS bug)。仅从扩展程序的来源加载的网页或脚本 可以访问该扩展程序的资源。

清单声明

使用 web_accessible_resources 清单属性来声明要公开哪些资源,并 来源此属性是一组用于声明资源访问规则的对象。每个对象 列出一些扩展程序资源,并且必须提供 matchesextension_ids 键,用于指明可以访问这些资源的来源。

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "test1.png", "test2.png" ],
      "matches": [ "https://web-accessible-resources-1.glitch.me/*" ]
    }, {
      "resources": [ "test3.png", "test4.png" ],
      "matches": [ "https://web-accessible-resources-2.glitch.me/*" ]
    }
  ],
  ...
}

数组中的每个对象都包含以下元素:

"resources"
一个字符串数组,其中每个字符串都包含从扩展程序根目录到给定资源的相对路径。资源可能包含星号 (*) 以实现通配符匹配。例如,"/images/*" 会以递归方式公开扩展程序的 images/ 目录中的所有内容,而 "*.png" 则会公开所有 PNG 文件。
"matches"
一个字符串数组,每个字符串包含一个匹配模式,用于指定哪些网站可以访问这组资源。系统只会使用源来匹配网址。源包括子网域匹配。Google Chrome 发出“无效的匹配模式”错误消息错误。
"extension_ids"
一个字符串数组,每个字符串都包含可以访问资源的扩展程序的 ID。

每个元素都必须包含一个 "resources" 元素以及一个 "matches""extension_ids" 元素。这会建立一个映射,以将指定资源公开到与该格式匹配的网页或到具有匹配 ID 的扩展程序。

通过网址在网页中提供资源 chrome-extension://[PACKAGE ID]/[PATH],可使用 runtime.getURL() 生成 方法。使用适当的 CORS 标头提供资源,因此它们可用 使用 fetch()

系统会禁止从网站源导航到扩展程序资源,除非相应资源 列为可通过网络访问请注意以下特殊情况:

  • 当扩展程序使用 webRequest API 重定向公共网页时, 向不可网络访问的资源发出的资源请求,此类请求也会被屏蔽。
  • 系统会禁止重定向来自公共资源的重定向,即使无法通过网络访问的资源归该重定向者所有也是如此 。
  • 除非 "incognito" 字段的值设为 "split",否则在无痕模式下会屏蔽导航。

内容脚本本身无需使用即可。

示例

网络无障碍资源示例演示了如何在有效的扩展程序中使用此元素。