Сопоставление шаблонов

Совпадение прав доступа к хосту и содержимого скриптов основано на наборе URL-адресов, определяемых шаблонами соответствия. Шаблон соответствия — это, по сути, URL-адрес, начинающийся с разрешенной схемы ( http , https , file или ftp ) и который может содержать символы ' * '. Специальный шаблон <all_urls> соответствует любому URL-адресу, начинающемуся с разрешенной схемы. Каждый шаблон соответствия состоит из 3 частей:

  • схема — например, http , file или *

    Примечание: Доступ к URL-адресам file не предоставляется автоматически. Пользователь должен перейти на страницу управления расширениями и дать согласие на доступ file для каждого расширения, которое запрашивает такой доступ.
  • хост — например, www.google.com или *.google.com или * ; если схема — file , то часть "хост" отсутствует.

  • путь — например, /* , /foo* или /foo/bar . Путь должен присутствовать в правах доступа хоста, но всегда рассматривается как /* .

Вот базовый синтаксис:

&lt;url-pattern&gt; := &lt;scheme&gt;://&lt;host&gt;&lt;path&gt;
&lt;scheme&gt; := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
&lt;host&gt; := '*' | '*.' &lt;any char except '/' and '*'&gt;+
&lt;path&gt; := '/' &lt;any chars&gt;

Значение символа ' * ' зависит от того, находится ли он в схеме , хосте или пути . Если схема* , то он соответствует либо http , либо https , но не file , ftp или urn . Если хост — просто * , то он соответствует любому хосту. Если хост*._hostname_ , то он соответствует указанному хосту или любому из его поддоменов. В разделе пути каждый символ ' * ' соответствует 0 или более символам. В следующей таблице показаны некоторые допустимые шаблоны.

Шаблон Что это делает Примеры совпадающих URL-адресов
http://*/* Соответствует любому URL-адресу, использующему схему http http://www.google.com/
http://example.org/foo/bar.html
http://*/foo* Соответствует любому URL-адресу, использующему схему http , на любом хосте, при условии, что путь начинается с /foo http://example.com/foo/bar.html
http://www.google.com/foo
https://*.google.com/foo*bar Соответствует любому URL-адресу, использующему схему https и расположенному на хосте google.com (например, www.google.com, docs.google.com или google.com), при условии, что путь начинается с /foo и заканчивается bar https://www.google.com/foo/baz/bar
https://docs.google.com/foobar
http://example.org/foo/bar.html Соответствует указанному URL-адресу http://example.org/foo/bar.html
file:///foo* Соответствует любому локальному файлу, путь к которому начинается с /foo файл:///foo/bar.html
файл:///foo
http://127.0.0.1/* Соответствует любому URL-адресу, использующему схему http и находящемуся на хосте 127.0.0.1. http://127.0.0.1/
http://127.0.0.1/foo/bar.html
*://mail.google.com/* Соответствует любому URL-адресу, начинающемуся с http://mail.google.com или https://mail.google.com . http://mail.google.com/foo/baz/bar
https://mail.google.com/foobar
urn:* Соответствует любому URL-адресу, начинающемуся с urn: . urn:uuid:54723bea-c94e-480e-80c8-a69846c3f582
urn:uuid:cfa40aff-07df-45b2-9f95-e023bcf4a6da
<all_urls> Соответствует любому URL-адресу, использующему разрешенную схему. (Список разрешенных схем см. в начале этого раздела.) http://example.org/foo/bar.html
файл:///bar/baz.html

Вот несколько примеров некорректного совпадения шаблонов:

Плохой шаблон Почему это плохо
http://www.google.com Нет пути
http://*foo/bar Символ '*' в хосте может сопровождаться только точкой '.' или косой чертой '/'.
http://foo.*.bar/baz Если в хосте присутствует символ '*', то он должен быть первым символом.
http:/bar Отсутствует разделитель схемы ("/" вместо "//")
foo://* Недействительная схема

Некоторые схемы не поддерживаются во всех контекстах.