Thanks to visit codestin.com
Credit goes to developer.mozilla.org

This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Шаблоны совпадения в расширении

Шаблоны совпадения - являются способом обозначения необходимых групп URL. Они используются в нескольких местах в WebExtension API, главным образом для объявления какие веб-страницы должны загружать встраиваемые скрипты и по каким URL необходимо ожидать событий из webRequest API.

API, которое использует шаблоны совпадения, обычно принимает их списками, и выполняет соответствующие действия, если URL имеет совпадение с одним из шаблонов. Например, взгляните на content_scripts ключ в manifest.json.

Структура шаблона совпадения

Примечание: Некоторые браузеры не поддерживают определённые схемы. Смотрите таблицу совместимости с браузерами для дополнительной информации.

Все шаблоны совпадения объявляются в виде строк. За исключением специального <all_urls> шаблона, шаблоны совпадения состоят из трёх компонентов: схема, хост и путь. Схема и хост разделяются с помощью ://.

<схема>://<хост><путь>

Схема

Компонент схема может принимать один из двух видов:

Вид Совпадение
* Только "http" and "https", так же "ws" и "wss" в некоторых браузерах.
Одно из http, https, ws, wss, ftp, ftps, data или file. Только данная схема.

Хост

Компонент хост может принимать один из трёх видов:

Form Matches
* Любой хост.
*. за которыми следует частичное имя хоста. Данный хост и любые его субдомены.
Полное название хоста без *. Только данный хост.

Хост не должен включать в себя значение порта.

Хост не обязателен, если схема задана, как "file".

Заметьте, что * звёздочка (символ универсального значения) может быть написана только в начале строки.

Путь

Компонент путь должен начинаться с / символа.

Вслед за ним он может иметь любую комбинацию символов и * звёздочек, которые позволено использовать для обозначения URL и строки параметров (начинается после ?). В отличии от хоста, путь может содержать * звёздочку в середине или в конце строки, и * звёздочка может появляться в строке более одного раза.

Значение пути сравнивается со строкой, которая представляет из себя URL и строку параметров. Если строка параметров присутствует в URL, тогда она отделяется от основного URL знаком ?. Если вы хотите иметь соответствие с URL на любом домене, где URL путь кончается на foo.bar, не зависимо от присутствия строки параметров, тогда вам нужно иметь массив шаблонов совпадений, например ['*://*/*foo.bar', '*://*/*foo.bar?*']. В этой ситуации необходимо использовать ?*, а не bar*, для того чтобы обозначить, что * будет применяться к строке параметров, а не к основной части URL пути.

Ни идентификатор якоря, ни предшествующая ему #, не считаются частями пути.

<all_urls>

Специальное значение <all_urls> совпадает со всеми URL, если они используются со следующими схемами: "http", "https", "ws", "wss", "ftp", "data", and "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/ ftps://files.somewhere.org/ resource://a/b/c/ (неподдерживаемая схема)
*://*/* Совпадение со всеми HTTP, HTTPS и WebSocket URL. http://example.org/ https://a.org/some/path/ ws://sockets.somewhere.org/ wss://ws.example.com/stuff/ ftp://ftp.example.org/ (несовпадающая схема) ftps://ftp.example.org/ (несовпадающая схема) file:///a/ (несовпадающая схема)
*://*.mozilla.org/*Совпадение со всеми HTTP, HTTPS и WebSocket URL, которые находятся на "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/Совпадение со всеми HTTP, HTTPS и WebSocket URL, которые находятся исключительно на "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/ (несовпадающий путь) https://mozilla.org/path?foo=1 (несовпадающий путь из-за строки параметров)
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/ (несовпадающий путь) https://mozilla.org/path/ ?foo=1 (несовпадающий путь из-за строки параметров)
https://mozilla.org/* Совпадение со всеми HTTPS URL только на домене "mozilla.org", с любым 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, имеющим идентификатор якоря. 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 (несовпадающий путь из-за строки параметров)
file:///blah/*Совпадает с любым FILE 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:///*".

Совместимость с браузерами