web_accessible_resources
类型 | 数组 |
---|---|
强制 | 否 |
清单版本 | 2 或更高 |
示例 |
json
|
描述
有时您希望将资源(例如图像、HTML、CSS 或 JavaScript)与您的扩展包捆绑在一起,并使它们可供网页和其他扩展使用。
注意:在 Firefox 105 之前,扩展默认情况下可以访问其他扩展中捆绑的资源。从 Firefox 105 开始,要使其他扩展能够访问扩展的资源,这些资源必须包含在此键中。
例如,Beastify 示例扩展 将网页替换为用户选择的动物图像。动物图像与扩展捆绑在一起。为了使选定的图像可见,扩展会添加<img>
元素,其 src
属性指向动物的图像。为了使网页能够加载图像,必须使它们可供 Web 访问。
使用 web_accessible_resources
键,您可以列出要使网页可用的所有捆绑资源。您可以将它们指定为相对于 manifest.json 文件的路径。
请注意,内容脚本不需要被列为可供 Web 访问的资源。
如果扩展想要使用 webRequest
或 declarativeNetRequest
将公共 URL(例如 HTTPS)重定向到扩展中捆绑的页面,则扩展必须将该页面列在 web_accessible_resources
键中。
清单 V2 语法
在清单 V2 中,可供 Web 访问的资源作为键下的数组添加,如下所示
"web_accessible_resources": [
"images/my-image.png"
]
清单 V3 语法
在清单 V3 中,web_accessible_resources
键是一个对象数组,如下所示
{
// …
"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"
属性,以及以下属性中的 "matches"
或 "extension_ids"
属性
名称 | 类型 | 描述 |
---|---|---|
extension_ids |
String 的 Array |
可选。默认为 [] ,这意味着其他扩展无法访问该资源。指定可以访问资源的扩展 ID 列表。"*" 匹配所有扩展。 |
matches |
String 的 Array |
可选。默认为 [] ,这意味着其他网站无法访问该资源。指定可以访问资源的页面的 URL 匹配模式 列表。仅使用原点来匹配 URL。原点包括子域匹配。路径必须设置为 |
resources |
String 的 Array |
要公开的资源数组。资源被指定为字符串,可以包含 * 用于通配符匹配。例如,"/images/*" 递归地公开扩展 /images 目录中的所有内容,而 "*.png" 则公开所有 PNG 文件。 |
use_dynamic_url |
布尔值 |
可选。默认为 false 。资源是否可以通过动态 ID 访问。动态 ID 针对每个会话生成,并在浏览器重启或扩展重新加载时重新生成。 |
使用 web_accessible_resources
假设您的扩展在 images/my-image.png
处包含一个图像文件,如下所示
my-extension-files/ manifest.json my-background-script.js images/ my-image.png
要使网页能够使用 src
属性指向该图像的 <img>
元素,您需要像这样指定 web_accessible_resources
"web_accessible_resources": ["images/my-image.png"]
然后可以使用类似以下的 URL 访问该文件
moz-extension://<extension-UUID>/images/my-image.png"
<extension-UUID>
不是您的扩展 ID。此 ID 是针对每个浏览器实例随机生成的。这可以防止网站通过检查已安装的扩展来对浏览器进行指纹识别。
注意:在清单 V2 的 Chrome 中,扩展的 ID 是固定的。当资源列在 web_accessible_resources
中时,可以通过 chrome-extension://<your-extension-id>/<path/to/resource>
访问它。在清单 V3 中,Chrome 可以通过将 use_dynamic_url
设置为 true
来使用动态 URL。
获取资源 URL 的推荐方法是使用 runtime.getURL
,传递相对于 manifest.json 的路径,例如
browser.runtime.getURL("images/my-image.png");
// something like:
// moz-extension://944cfddf-7a95-3c47-bd9a-663b3ce8d699/images/my-image.png
这种方法无论您的扩展在哪个浏览器上运行都能提供正确的 URL。
通配符
web_accessible_resources
条目可以包含通配符。例如,以下条目也可以用于包含 "images/my-image.png" 处的资源
"web_accessible_resources": ["images/*.png"]
安全
示例
清单 V2 示例
"web_accessible_resources": ["images/my-image.png"]
使 "images/my-image.png" 处的文件可供任何网站和扩展访问 Web。
清单 V3 示例
"web_accessible_resources": [
{
"resources": [ "images/my-image.png" ],
"extension_ids": ["*"],
"matches": [ "*://*/*" ]
}
]
使 "images/my-image.png" 处的文件可供任何网站和扩展访问 Web。
建议仅在需要时指定 extension_ids
或 matches
。例如,如果资源只需要可供 example.com 的网页访问
"web_accessible_resources": [
{
"resources": [ "images/my-image.png" ],
"matches": [ "https://example.com/*" ]
}
]
示例扩展
浏览器兼容性
BCD 表格仅在浏览器中加载