匹配模式
匹配模式是一種指定 URL 組的方法:匹配模式可以匹配一組特定的 URL。它們在 WebExtensions API 的幾個地方使用,最值得注意的是指定要將內容指令碼載入到哪些文件中,以及指定要新增webRequest 監聽器的哪些 URL。
使用匹配模式的 API 通常接受一個匹配模式列表,如果 URL 匹配任何模式,它們將執行相應的操作。例如,請參閱 manifest.json 中的content_scripts 鍵。
匹配模式結構
注意:某些瀏覽器不支援某些方案。請檢視瀏覽器相容性表格瞭解詳情。
所有匹配模式都指定為字串。除了特殊的<all_urls> 模式外,匹配模式由三個部分組成:方案、主機和路徑。方案和主機之間用 :// 分隔。
<scheme>://<host><path>
scheme
方案元件可以採取以下兩種形式之一
| 表單 | 匹配 |
|---|---|
* |
僅支援 "http" 和 "https",在某些瀏覽器中還支援"ws" 和 "wss"。 |
http、https、ws、wss、ftp、data、file 或 (chrome-)extension 中的一個。 |
僅匹配給定的方案。 |
主機
主機元件可以採取以下三種形式之一
| 表單 | 匹配 |
|---|---|
* |
任何主機。 |
*. 後面跟著主機名的一部分。 |
給定的主機及其任何子域。 |
| 一個完整的主機名,沒有萬用字元。 | 僅匹配給定的主機。 |
主機不得包含埠號。
僅當方案為 "file" 時,主機才是可選的。
請注意,萬用字元只能出現在開頭。
路徑
路徑元件必須以 / 開頭。
在此之後,它可以包含任意組合的 * 萬用字元以及 URL 路徑或查詢字串中允許的任何字元。與主機不同,路徑元件可以在中間或末尾包含 * 萬用字元,並且 * 萬用字元可以出現多次。
路徑的值將與 URL 路徑加上URL 查詢字串的字串進行匹配。如果 URL 中存在查詢字串,這將包括兩者之間的 ?。例如,如果您想匹配任何域上 URL 路徑以 foo.bar 結尾的 URL,則需要使用匹配模式陣列,例如 ["*://*/*foo.bar", "*://*/*foo.bar?*"]。這裡需要 ?* 而不是僅 bar*,是為了將結尾的 * 錨定到 URL 查詢字串,而不是 URL 路徑的某一部分。
Neither the URL fragment identifier, nor the # which precedes it, are considered as part of the path。
注意:路徑模式字串不應包含埠號。新增埠,例如:https://:1234/* 會導致匹配模式被忽略。但是,https://:1234 會與 https:///* 匹配。
<all_urls>
特殊值 <all_urls> 匹配所有受支援方案下的所有 URL:即 "http"、"https"、"ws"、"wss"、"ftp"、"data" 和 "file"。
示例
| 模式 | 示例匹配 | 示例不匹配 |
|---|---|---|
|
匹配所有 URL。 |
|
|
|
匹配所有 HTTP、HTTPS 和 WebSocket URL。 |
|
|
|
匹配 "mozilla.org" 或其任何子域上的所有 HTTP、HTTPS 和 WebSocket URL。 |
|
|
|
匹配 exactly "mozilla.org/" 上的所有 HTTP、HTTPS 和 WebSocket URL。 |
|
|
|
僅匹配 "ftp://mozilla.org/"。 |
ftp://mozilla.org |
|
|
匹配任何主機上的 HTTPS URL,其路徑為 "path"。 |
|
|
|
匹配任何主機上的 HTTPS URL,其路徑為 "path/" 且沒有 URL 查詢字串。 |
|
|
|
僅在 "mozilla.org" 匹配 HTTPS URL,具有任何 URL 路徑和 URL 查詢字串。 |
|
|
|
僅匹配此 URL,或此 URL 帶有任何 URL 片段。 |
|
其他任何內容。 |
|
匹配在 "mozilla.org" 上託管的 HTTPS URL,其路徑在中間的某個地方包含元件 "b"。如果字串以 |
|
|
|
匹配路徑以 "blah" 開頭的任何 FILE URL。 |
|
file:///bleh/(不匹配的路徑) |
無效的匹配模式
| 無效的模式 | 原因 |
|---|---|
resource://path/ |
不受支援的方案。 |
https://mozilla.org |
無路徑。 |
https://mozilla.*.org/ |
主機中的 "*" 必須在開頭。 |
https://*zilla.org/ |
主機中的 "*" 必須是唯一字元,或者後面跟著 "."。 |
http*://mozilla.org/ |
方案中的 "*" 必須是唯一字元。 |
https://mozilla.org:80/ |
主機不得包含埠號。 |
*://* |
空路徑:這應該是 *://*/*。 |
file://* |
空路徑:這應該是 file:///*。 |
瀏覽器相容性
載入中…