Совпадение прав доступа к хосту и содержимого скриптов основано на наборе URL-адресов, определяемых шаблонами соответствия. Шаблон соответствия — это, по сути, URL-адрес, начинающийся с разрешенной схемы ( http , https , file или ftp ) и который может содержать символы ' * '. Специальный шаблон <all_urls> соответствует любому URL-адресу, начинающемуся с разрешенной схемы. Каждый шаблон соответствия состоит из 3 частей:
схема — например,
http,fileили*Примечание: Доступ к URL-адресамfileне предоставляется автоматически. Пользователь должен перейти на страницу управления расширениями и дать согласие на доступfileдля каждого расширения, которое запрашивает такой доступ.хост — например,
www.google.comили*.google.comили*; если схема —file, то часть "хост" отсутствует.путь — например,
/*,/foo*или/foo/bar. Путь должен присутствовать в правах доступа хоста, но всегда рассматривается как/*.
Вот базовый синтаксис:
<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp' | 'urn'
<host> := '*' | '*.' <any char except '/' and '*'>+
<path> := '/' <any chars>
Значение символа ' * ' зависит от того, находится ли он в схеме , хосте или пути . Если схема — * , то он соответствует либо 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://* | Недействительная схема |
Некоторые схемы не поддерживаются во всех контекстах.