清单文件——可在网页中访问的资源

字符串数组,指定扩展程序包内可以在网页中使用的资源路径。这些路径相对于扩展程序包的根目录,还可以包含通配符。例如,为了在 example.com 上建立自定义界面,而插入内容脚本的扩展程序可以将界面需要的所有资源(图片、图标、样式表、脚本等等)加入白名单,如下所示:

{
  ...
  "web_accessible_resources": [
    "images/*.png",
    "style/double-rainbow.css",
    "script/double-rainbow.js",
    "script/main.js",
    "templates/*"
  ],
  ...
}

这些资源将可以通过 URL chrome-extension://[扩展程序包的标识符]/[路径] 使用,URL 可以通过 runtime.getURL 方法产生。加入白名单的资源将以合适的 CORS 头信息提供,所以它们可以通过 XHR 之类的机制使用。

除非在网页可以访问的资源中列出,从网页来源到扩展程序资源的导航会被阻止。注意以下边缘情况:

  • 扩展程序使用 webRequestdeclarativeWebRequest API 将公共资源重定向至网页不能访问的资源时,这样的请求也会被阻止。
  • 即使网页不能访问的资源属于进行重定向的扩展程序,以上情况仍然成立。

内容脚本本身不需要加入白名单。

在清单文件版本 2 之前,扩展程序内的所有资源都可以从任何网页中访问,这样恶意网站就能收集用户已安装扩展程序的指纹信息或者利用扩展程序中的漏洞(例如 XSS 漏洞)。将资源访问限制为明确需要可以通过网络访问的那些,有助于尽可能减小可用的攻击层面,并保护用户的隐私。

默认情况

使用 manifest_version 2 或更高的扩展程序包内的资源默认情况下被阻止,必须通过这一属性加入白名单。

使用 manifest_version 1 的扩展程序包内的资源默认情况下可用,但是只要您设置了这一属性,它将以所有加入白名单资源的完整列表来对待,没有列出的资源将被阻止。