Spec-Zone.ru › Web Extensions

Шаблоны соответствия в манифестах расширений

Шаблоны соответствия — способ указать группы 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».

Примеры

Шаблон Примеры совпадений Примеры несовпадений

<all_urls>

Сопоставить все URL.

http://example.org/

https://a.org/some/path/

ws://sockets.somewhere.org/

wss://ws.example.com/stuff/

ftp://files.somewhere.org/

resource://a/b/c/
(неподдерживаемая схема)

ftps://files.somewhere.org/
(неподдерживаемая схема)

*://*/*

Сопоставить все URL HTTP, HTTPS и WebSocket.

http://example.org/

https://a.org/some/path/

ws://sockets.somewhere.org/

wss://ws.example.com/stuff/

ftp://ftp.example.org/
(несопоставленная схема)

file:///a/
(несопоставленная схема)

*://*.mozilla.org/*

Сопоставить все URL HTTP, HTTPS и WebSocket, размещенные на «mozilla.org» или одном из его поддоменов.

http://mozilla.org/

https://mozilla.org/

http://a.mozilla.org/

http://a.b.mozilla.org/

https://b.mozilla.org/path/

ws://ws.mozilla.org/

wss://secure.mozilla.org/something

ftp://mozilla.org/
(несопоставленная схема)

http://mozilla.com/
(несопоставленный хост)

http://firefox.org/
(несопоставленный хост)

*://mozilla.org/

Сопоставить все URL HTTP, HTTPS и WebSocket, размещенные точно на «mozilla.org/».

http://mozilla.org/

https://mozilla.org/

ws://mozilla.org/

wss://mozilla.org/

ftp://mozilla.org/
(несопоставленная схема)

http://a.mozilla.org/
(несопоставленный хост)

http://mozilla.org/a
(несопоставленный путь)

ftp://mozilla.org/

Сопоставить только «ftp://mozilla.org/».

ftp://mozilla.org

http://mozilla.org/
(несопоставленная схема)

ftp://sub.mozilla.org/
(несопоставленный хост)

ftp://mozilla.org/path
(несопоставленный путь)

https://*/path

Сопоставить HTTPS URL на любом хосте, чей путь равен «path».

https://mozilla.org/path

https://a.mozilla.org/path

https://something.com/path

http://mozilla.org/path
(несопоставленная схема)

https://mozilla.org/path/
(несопоставленный путь)

https://mozilla.org/a
(несопоставленный путь)

https://mozilla.org/
(несопоставленный путь из-за строки запроса URL)

https://mozilla.org/path?foo=1
(несопоставленный путь из-за строки запроса URL)

https://*/path/

Сопоставить HTTPS URL на любом хосте, чей путь равен «path/» и который не содержит строки запроса URL.

https://mozilla.org/path/

https://a.mozilla.org/path/

https://something.com/path/

http://mozilla.org/path/
(несопоставленная схема)

https://mozilla.org/path
(несопоставленный путь)

https://mozilla.org/a
(несопоставленный путь)

https://mozilla.org/
(несопоставленный путь)

https://mozilla.org/path/?foo=1
(несопоставленный путь из-за строки запроса URL)

https://mozilla.org/*

Сопоставить HTTPS URL только на «mozilla.org» с любым путем URL и строкой запроса URL.

https://mozilla.org/

https://mozilla.org/path

https://mozilla.org/another

https://mozilla.org/path/to/doc

https://mozilla.org/path/to/doc?foo=1

http://mozilla.org/path
(несопоставленная схема)

https://mozilla.com/path
(несопоставленный хост)

https://mozilla.org/a/b/c/

Сопоставить только этот URL или этот URL с любым фрагментом URL.

https://mozilla.org/a/b/c/

https://mozilla.org/a/b/c/#section1

Любой другой.

https://mozilla.org/*/b/*/

Сопоставить HTTPS URL, размещенные на «mozilla.org», у которых путь содержит компонент «b» где-то посередине. Сопоставит URL со строками запросов, если строка заканчивается на /.

https://mozilla.org/a/b/c/

https://mozilla.org/d/b/f/

https://mozilla.org/a/b/c/d/

https://mozilla.org/a/b/c/d/#section1

https://mozilla.org/a/b/c/d/?foo=/

https://mozilla.org/a?foo=21314&bar=/b/&extra=c/

https://mozilla.org/b/*/
(несопоставленный путь)

https://mozilla.org/a/b/
(несопоставленный путь)

https://mozilla.org/a/b/c/d/?foo=bar
(несопоставленный путь из-за строки запроса URL)

file:///blah/*

Сопоставить любой файл URL, чей путь начинается с «blah».

file:///blah/

file:///blah/bleh

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API