Match patterns are a way to specify groups of URLs: a match pattern matches a specific set of URLs. They are used in WebExtensions APIs in a few places, most notably to specify which documents to load
content scripts
into, and to specify which URLs to add
webRequest
listeners to.
APIs that use match patterns usually accept a list of match patterns, and will perform the appropriate action if the URL matches any of the patterns. See, for example, the
content_scripts
key in manifest.json.
注意: Some browsers don’t support certain schemes. 检查 浏览器兼容性表格 了解细节。
All match patterns are specified as strings. Apart from the special
<all_urls>
pattern, match patterns consist of three parts:
scheme
,
host
,和
path
. The scheme and host are separated by
://
.
<scheme>://<host><path>
scheme component may take one of two forms:
| 表单 | Matches |
|---|---|
*
|
Only "http" and "https" and in some browsers also "ws" and "wss" . |
One of
http
,
https
,
ws
,
wss
,
ftp
,
data
,
file
,或
(chrome-)extension
.
|
Only the given scheme. |
host component may take one of three forms:
| 表单 | Matches |
|---|---|
*
|
Any host. |
*.
followed by part of the hostname.
|
The given host and any of its subdomains. |
| A complete hostname, without wildcards. | Only the given host. |
host must not include a port number.
host is optional only if the scheme is "file".
Note that the wildcard may only appear at the start.
path
component must begin with a
/
.
After that, it may subsequently contain any combination of the
*
wildcard and any of the characters that are allowed in URL paths or query strings. Unlike
host
,
path
component may contain the
*
wildcard in the middle or at the end, and the
*
wildcard may appear more than once.
The value for the
path
matches against the string which is the URL path plus the
URL query string
. This includes the
?
between the two, if the query string is present in the URL. For example, if you want to match URLs on any domain where the URL path ends with
foo.bar
, then you need to use an array of Match Patterns like
['*://*/*foo.bar', '*://*/*foo.bar?*']
。
?*
is needed, rather than just
bar*
, in order to anchor the ending
*
as applying to the URL query string and not some portion of the URL path.
Neither the
URL fragment identifier
, nor the
#
which precedes it, are considered as part of the
path
.
注意:
The path pattern string should not include a port number. Adding a port, as in:
http://localhost:1234/*
causes the match pattern to be ignored. However,
http://localhost:1234
will match with
http://localhost/*
.
The special value
<all_urls>
matches all URLs under any of the supported schemes: that is "http", "https", "ws", "wss", "ftp", "data", and "file".
| 模式 | Example matches | Example non-matches |
|---|---|---|
<all_urls>
Match all URLs. |
http://example.org/
|
resource://a/b/c/
(unsupported scheme)
|
*://*/*
Match all HTTP, HTTPS and WebSocket URLs. |
http://example.org/
|
ftp://ftp.example.org/
(unmatched scheme)
|
*://*.mozilla.org/*
Match all HTTP, HTTPS and WebSocket URLs that are hosted at "mozilla.org" or one of its subdomains. |
http://mozilla.org/
|
ftp://mozilla.org/
(unmatched scheme)
|
*://mozilla.org/
Match all HTTP, HTTPS and WebSocket URLs that are hosted at exactly "mozilla.org/". |
http://mozilla.org/
|
ftp://mozilla.org/
(unmatched scheme)
|
ftp://mozilla.org/
Match only "ftp://mozilla.org/". |
ftp://mozilla.org
|
http://mozilla.org/
(unmatched scheme)
|
https://*/path
Match HTTPS URLs on any host, whose path is "path". |
https://mozilla.org/path
|
http://mozilla.org/path
(unmatched scheme)
|
https://*/path/
Match HTTPS URLs on any host, whose path is "path/" and which has no URL query string. |
https://mozilla.org/path/
|
http://mozilla.org/path/
(unmatched scheme)
|
https://mozilla.org/*
Match HTTPS URLs only at "mozilla.org", with any URL path and URL query string. |
https://mozilla.org/
|
http://mozilla.org/path
(unmatched scheme)
|
https://mozilla.org/a/b/c/
Match only this URL, or this URL with any URL fragment. |
https://mozilla.org/a/b/c/
|
Anything else. |
https://mozilla.org/*/b/*/
Match HTTPS URLs hosted on "mozilla.org", whose path contains a
component "b" somewhere in the middle. Will match URLs with query
strings, if the string ends in a
|
https://mozilla.org/a/b/c/
|
https://mozilla.org/b/*/
(unmatched path)
|
file:///blah/*
Match any FILE URL whose path begins with "blah". |
file:///blah/
|
file:///bleh/
(unmatched path) |
| Invalid pattern | Reason |
|---|---|
resource://path/
|
Unsupported scheme. |
https://mozilla.org
|
No path. |
https://mozilla.*.org/
|
"*" in host must be at the start. |
https://*zilla.org/
|
"*" in host must be the only character or be followed by ".". |
http*://mozilla.org/
|
"*" in scheme must be the only character. |
https://mozilla.org:80/
|
Host must not include a port number. |
*://*
|
Empty path: this should be "
*://*/*
".
|
file://*
|
Empty path: this should be "
file:///*
".
|
BCD tables only load in the browser
最后修改: , 由 MDN 贡献者