主机权限和内容脚本匹配基于由匹配
模式定义的一组网址。匹配模式本质上是以允许的架构(http、https、
file 或 ftp)开头的网址,并且可以包含“*”字符。特殊模式 <all_urls> 与
以允许的架构开头的任何网址匹配。每个匹配模式都包含 3 个部分:
架构,例如
http或file或*注意 :对file网址的访问不是自动的。用户必须访问扩展程序管理页面,并为每个请求访问file的扩展程序选择启用此访问权限。主机,例如
www.google.com或*.google.com或*;如果架构是file,则 没有 主机 部分路径,例如
/*、/foo*或/foo/bar。路径必须存在于主机权限中,但始终被视为/*。
以下是基本语法:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
“*”的含义取决于它位于 架构、主机 还是 路径 部分。如果
架构为*,则它与http或https匹配,但不与file、ftp或urn匹配。如果 主机 仅为 *,则它与任何主机匹配。如果
主机 为 *._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.com 或 https://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://* | 架构 无效 |
某些架构并非在所有上下文中都受支持。