Manifest - Web 可访问资源(Web Accessible Resources)

Web 可访问资源是扩展程序中的文件,可由网页或其他扩展程序访问。扩展程序通常使用此功能来公开需要在网页中加载的图像或其他资产,但扩展程序包中包含的任何资产都可以通过网络访问。

默认情况下,没有资源可通过网络访问;只有从扩展源加载的页面或脚本才能访问该扩展的资源。扩展作者可以使用 web_accessible_resources 清单属性来声明哪些资源被公开以及来自哪些来源。

在 Manifest V2 之前,可以从 Web 上的任何页面访问扩展中的所有资源。这允许恶意网站对用户已安装的扩展程序进行指纹fingerprint识别或利用已安装扩展程序中的漏洞(例如 XSS 漏洞XSS bugs)。

从 Manifest V2 开始,对这些资源的访问受到限制,以保护用户的隐私。 MV2 扩展仅公开那些明确指定为 Web 可访问的资源。

Manifest V3 提供更细粒度的控制,让您可以向指定的页面、域或扩展公开单个资源。

# Manifest declaration(声明)

声明资源访问规则的对象数组。每个对象将扩展资源数组映射到可以访问这些资源的 URL 和/或扩展 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

    指定哪些页面可以访问资源的 URL 匹配模式列表。仅使用来源来匹配 URL;子域模式 (*.google.com) 和路径被忽略。

  • extension_ids

    扩展 ID 列表,指定哪些扩展可以访问资源。

  • use_dynamic_url

    如果为 true,则仅允许通过动态 ID 访问资源。每个会话都会生成动态 ID。它在浏览器重新启动或扩展程序重新加载时重新生成。

每个元素都必须包含一个“resources”元素和一个“matches”“extension_ids”元素。这建立了一个映射,将指定的资源暴露给与模式匹配的网页或指定的扩展。

这些资源可通过 URL chrome-extension://[PACKAGE ID]/[PATH] 在网页中获得,该 URL 可以使用 runtime.getURL 方法生成。资源使用适当的 CORS 标头提供,因此它们可以通过 XHR 等机制获得。

除非资源被列为 Web 可访问,否则从 Web 源到扩展资源的导航将被阻止。请注意这些极端情况:

  • 当扩展程序使用 webRequestdeclarativeWebRequest API 将公共资源请求重定向到 Web 不可访问的资源时,此类请求也会被阻止。
  • 即使不可通过 Web 访问的资源由重定向扩展程序拥有,上述内容也适用。

不需要允许内容脚本Content scripts本身。

# Example

Web Accessible Resources example 示例演示了该元素在工作扩展中的使用。

By.一粒技术服务

results matching ""

    No results matching ""