可通过网络访问的资源是指可供网页或其他扩展程序访问的扩展程序内的文件。附加信息通常会使用此功能显示需要 但扩展程序捆绑包中包含的任何资源均可设为网页可访问。
默认情况下,所有资源都无法在网络上访问,因为恶意网站可以利用这一点指纹用户已安装的扩展程序 或利用已安装的扩展程序中的漏洞(例如 XSS bug)。仅从扩展程序的来源加载的网页或脚本 可以访问该扩展程序的资源。
清单声明
使用 web_accessible_resources
清单属性声明要公开哪些资源以及要公开到哪些来源。此属性是一个对象数组,用于声明资源访问规则。每个对象都会将一组扩展程序资源映射到一组可访问这些资源的网址和/或扩展程序 ID。
{
...
"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/*" ],
"use_dynamic_url": true
}
],
...
}
数组中的每个对象都包含以下元素:
"resources"
- 一个字符串数组,其中每个字符串都包含从扩展程序根目录到给定资源的相对路径。资源可能包含星号 (
*
) 以实现通配符匹配。例如,"/images/*"
会以递归方式公开扩展程序的images/
目录中的所有内容,而"*.png"
会公开所有 PNG 文件。 "matches"
- 一个字符串数组,其中每个字符串都包含一个匹配模式,用于指定哪些网站可以访问这组资源。只有来源用于匹配网址。来源包括子网域匹配。Google Chrome 发出“无效的匹配模式”错误消息错误。
"extension_ids"
- 一个字符串数组,其中每个字符串都包含可以访问资源的扩展程序的 ID。
"use_dynamic_url"
- 如果为 true,则仅允许通过动态 ID 访问资源。系统会为每个会话生成一个动态 ID。也就是说,系统会在浏览器重启或扩展程序重新加载时重新生成此文件。
每个元素都必须包含一个 "resources"
元素以及一个 "matches"
或 "extension_ids"
元素。这会建立一个映射,以将指定资源公开到与该格式匹配的网页或到具有匹配 ID 的扩展程序。"use_dynamic_url"
元素是可选的。
资源的导航性
可通过网址在网页中获取资源
chrome-extension://[PACKAGE ID]/[PATH]
,可使用 runtime.getURL()
生成
方法。这些资源会附带适当的 CORS 标头提供,因此可通过 fetch()
使用。
系统会禁止从网站源导航到扩展程序资源,除非相应资源 列为可通过网络访问请注意以下特殊情况:
- 如果扩展程序使用 webRequest API 将公开资源请求重定向到无法通过网络访问的资源,系统也会阻止此类请求。
- 即使无法通过 Web 访问的资源归重定向 。
- 除非
"incognito"
字段的值设为"split"
,否则在无痕模式下会屏蔽导航。
无需允许内容脚本本身。
示例
网络无障碍资源示例演示了如何在有效的扩展程序中使用此元素。