可通过 Web 访问的资源是指扩展程序中可通过网页或其他资源 。附加信息通常会使用此功能显示需要 但扩展程序捆绑包中包含的任何资源均可设为网页可访问。
默认情况下,所有资源都无法在网络上访问,因为恶意网站可以利用该漏洞指纹记录用户已安装的扩展程序 或利用已安装的扩展程序中的漏洞(例如 XSS bug)。仅从扩展程序的来源加载的网页或脚本 可以访问该扩展程序的资源。
清单声明
使用 web_accessible_resources
清单属性来声明要公开哪些资源,并
来源此属性是一组用于声明资源访问规则的对象。每个对象
列出一些扩展程序资源,并且必须提供 matches
或
extension_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"
,否则在无痕模式下会屏蔽导航。
内容脚本本身无需使用即可。
示例
网络无障碍资源示例演示了如何在有效的扩展程序中使用此元素。