Шаблоны соответствия в манифестах расширений
Шаблоны соответствия — способ указать группы URL-адресов: шаблон соответствия соответствует определённому набору URL-адресов. Они используются в API WebExtensions в нескольких местах, в первую очередь для указания документов, в которые необходимо загрузить скрипты содержимого, и для указания URL-адресов, к которым нужно добавить webRequest обработчики.
API, которые используют шаблоны соответствия, обычно принимают список шаблонов соответствия и выполняют соответствующее действие, если URL соответствует любому из шаблонов. Например, см. ключ content_scripts в manifest.json.
Структура шаблона соответствия
Примечание: Некоторые браузеры не поддерживают определённые схемы. Подробности см. в таблице совместимости браузеров.
Все шаблоны соответствия задаются как строки. Кроме специального шаблона <all_urls>, шаблоны соответствия состоят из трёх частей: схема, хост и путь. Схема и хост разделяются ://.
<scheme>://<host><path>
схема
Компонент схема может иметь одну из двух форм:
| Форма | Соответствия |
|---|---|
* | Только "http" и "https", а в некоторых браузерах также "ws" и "wss". |
Одна из http, https, ws, wss, ftp, data, file, или (chrome-)extension. | Только заданная схема. |
хост
Компонент хост может иметь одну из трёх форм:
| Форма | Соответствия |
|---|---|
* | Любой хост. |
*., за которым следует часть имени хоста. | Заданный хост и все его поддомены. |
| Полное имя хоста без подстановочных знаков. | Только заданный хост. |
хост не должен включать номер порта.
хост необязателен только если схема равна "file".
Обратите внимание, что подстановочный знак может находиться только в начале.
Путь
Компонент путь должен начинаться с /.
После этого он может содержать любую комбинацию символа подстановки * и любых символов, разрешенных в пути URL или строке запроса. В отличие от компонента хост, компонент путь может содержать символ подстановки * в середине или в конце, и символ подстановки * может встречаться более одного раза.
Значение для пути сопоставляется со строкой, которая представляет собой путь URL плюс строку запроса URL. Это включает в себя ? между ними, если строка запроса присутствует в URL. Например, если вы хотите сопоставить URL на любом домене, где путь URL заканчивается на foo.bar, то вам нужно использовать массив шаблонов сопоставления, например ['*://*/*foo.bar', '*://*/*foo.bar?*']. Символ ?* необходим, а не только bar*, для того, чтобы закрепить окончание * как относящееся к строке запроса URL, а не к какой-либо части пути URL.
Ни идентификатор фрагмента URL, ни # , который ему предшествует, не рассматриваются как часть пути.
Примечание: Строка шаблона пути не должна содержать номер порта. Добавление порта, как в: http://localhost:1234/* приводит к игнорированию шаблона сопоставления. Однако http://localhost:1234 будет совпадать с http://localhost/*.
<all_urls>
Особое значение <all_urls> сопоставляет все URL под любой из поддерживаемых схем: «http», «https», «ws», «wss», «ftp», «data» и «file».
Примеры
| Шаблон | Примеры совпадений | Примеры несовпадений |
|---|---|---|
|
Сопоставить все URL. |
|
|
|
Сопоставить все URL HTTP, HTTPS и WebSocket. |
|
|
|
Сопоставить все URL HTTP, HTTPS и WebSocket, размещенные на «mozilla.org» или одном из его поддоменов. |
|
|
|
Сопоставить все URL HTTP, HTTPS и WebSocket, размещенные точно на «mozilla.org/». |
|
|
|
Сопоставить только «ftp://mozilla.org/». | ftp://mozilla.org |
|
|
Сопоставить HTTPS URL на любом хосте, чей путь равен «path». |
|
|
|
Сопоставить HTTPS URL на любом хосте, чей путь равен «path/» и который не содержит строки запроса URL. |
|
|
|
Сопоставить HTTPS URL только на «mozilla.org» с любым путем URL и строкой запроса URL. |
|
|
|
Сопоставить только этот URL или этот URL с любым фрагментом URL. |
| Любой другой. |
|
Сопоставить HTTPS URL, размещенные на «mozilla.org», у которых путь содержит компонент «b» где-то посередине. Сопоставит URL со строками запросов, если строка заканчивается на |
|
|
|
Сопоставить любой файл URL, чей путь начинается с «blah». |
|
file:///bleh/(несопоставленный путь) |
Некорректные шаблоны сопоставления
| Некорректный шаблон | Причина |
|---|---|
resource://path/ | Неподдерживаемая схема. |
https://mozilla.org | Нет пути. |
https://mozilla.*.org/ | «*» в хосте должен стоять в начале. |
https://*zilla.org/ | «*» в хосте должен быть единственным символом или следовать за «.» |
http*://mozilla.org/ | «*» в схеме должен быть единственным символом. |
https://mozilla.org:80/ | Хост не должен включать номер порта. |
*://* | Пустой путь: должен быть «*://*/*». |
file://* | Пустой путь: должен быть «file:///*». |
Совместимость с браузерами
| Рабочий стол | Мобильный | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | |
data |
Нет | Нет | 48Не поддерживает инъекцию скриптов контента или стилей. |
? | Нет | Нет | ? | ? | 48Не поддерживает инъекцию скриптов контента или стилей. |
? | Нет | ? |
file |
Да | 14 | 48 | ? | Да | Нет | ? | ? | 48 | ? | Нет | ? |
ftp |
Да | 14 | 48 | ? | Да | Нет | ? | ? | 48 | ? | Нет | ? |
http |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
https |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
wildcard |
Да | 14 | 48 | ? | Да | 14 | ? | ? | 48 | ? | 15 | ? |
wildcard_websocket |
Нет | Нет | 55 | ? | Нет | Нет | ? | ? | 55 | ? | Нет | ? |
ws |
Нет | Нет | 55 | ? | Нет | Нет | ? | ? | 55 | ? | Нет | ? |
wss |
Нет | Нет | 55 | ? | Нет | Нет | ? | ? | 55 | ? | Нет | ? |
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Match_patterns