匹配模式

主机权限内容脚本匹配基于由匹配 模式定义的一组网址。匹配模式本质上是以允许的架构(httphttpsfileftp)开头的网址,并且可以包含“*”字符。特殊模式 <all_urls> 与 以允许的架构开头的任何网址匹配。每个匹配模式都包含 3 个部分:

  • 架构,例如 httpfile*

    注意 :对 file 网址的访问不是自动的。用户必须访问扩展程序管理页面,并为每个请求访问 file 的扩展程序选择启用此访问权限。
  • 主机,例如 www.google.com*.google.com*;如果架构是 file,则 没有 主机 部分

  • 路径,例如 /*/foo*/foo/bar。路径必须存在于主机权限中,但始终被视为 /*

以下是基本语法:

&lt;url-pattern&gt; := &lt;scheme&gt;://&lt;host&gt;&lt;path&gt;
&lt;scheme&gt; := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
&lt;host&gt; := '*' | '*.' &lt;any char except '/' and '*'&gt;+
&lt;path&gt; := '/' &lt;any chars&gt;

*”的含义取决于它位于 架构主机 还是 路径 部分。如果 架构*,则它与httphttps匹配,但fileftpurn匹配。如果 主机 仅为 *,则它与任何主机匹配。如果 主机*._hostname_,则它与指定的主机或其任何子网域匹配。在 路径 部分中,每个“*”与 0 个或多个字符匹配。下表显示了一些有效模式。

图案作用匹配网址的示例
http://*/*与使用 http 架构的任何网址匹配http://www.google.com/
http://example.org/foo/bar.html
http://*/foo*与任何主机上使用 http 架构的任何网址匹配,只要路径以 /foo 开头即可http://example.com/foo/bar.html
http://www.google.com/foo
https://*.google.com/foo*bar与使用 https 架构且位于 google.com 主机(例如 www.google.com、docs.google.com 或 google.com)上的任何网址匹配,只要路径以 /foo 开头并以 bar 结尾即可https://www.google.com/foo/baz/bar
https://docs.google.com/foobar
http://example.org/foo/bar.html与指定的网址匹配http://example.org/foo/bar.html
file:///foo*与路径以 /foo 开头的任何本地文件匹配file:///foo/bar.html
file:///foo
http://127.0.0.1/*与使用 http 架构且位于主机 127.0.0.1 上的任何网址匹配http://127.0.0.1/
http://127.0.0.1/foo/bar.html
*://mail.google.com/*与以 http://mail.google.comhttps://mail.google.com 开头的任何网址匹配。http://mail.google.com/foo/baz/bar
https://mail.google.com/foobar
urn:*与以 urn: 开头的任何网址匹配。urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582
urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da
<all_urls>与使用允许的架构的任何网址匹配。(如需查看允许的架构的列表,请参阅本部分开头。)http://example.org/foo/bar.html
file:///bar/baz.html

以下是一些无效的模式匹配示例:

错误模式错误原因
http://www.google.com缺少 路径
http://*foo/bar主机 中的“*”后只能跟“.”或“/”
http://foo.*.bar/baz 如果“*”位于 主机 中,则它必须是第一个字符
http:/bar缺少 架构 分隔符(“/”应为“//”)
foo://*架构 无效

某些架构并非在所有上下文中都受支持。