Шаблоны URL'ов

С помощью шаблонов URL'ов вы можете задать группу адресов, к которым будет применяться политика. Шаблоны URL'ов могут содержать один или несколько подстановочных знаков *, например *://mysite.com:*/*. Подстановочный знак всегда заменяет элемент целиком. Например, шаблон https://mysit*.com недопустим.
  1. Допустимые шаблоны
  2. Порядок фильтрации URL'ов
  3. Недопустимые шаблоны
  4. Примеры шаблонов

Допустимые шаблоны

scheme://host:port/path/@query
  • scheme — чаще всего http или https. Если схема scheme:// не указана или указан *, политика применяется ко всем схемам. Нестандартные схемы поддерживаются только в формате scheme:* и scheme://*. Поддерживаемые стандартные схемы:

    • about;
    • blob;
    • content;
    • chrome;
    • cid;
    • data;
    • file;
    • filesystem;
    • ftp;
    • gopher;
    • http;
    • https;
    • javascript;
    • mailto;
    • ws;
    • wss.
  • host — полное доменное имя, включает доменное имя верхнего уровня и поддомены (указываются слева). Еще можно указывать хост, например localhost. По умолчанию политика применяется только к указанному домену, без поддоменов. Чтобы она применялась к любому поддомену, добавьте перед доменом подстановочный знак [*.], например [*.]mysite.com. Если в шаблоне есть префикс . в host, то фильтр проходят только точные совпадения с host.
  • port — номер порта, число от 1 до 65535. Если port не указан или указан *, политика применяется ко всем портам.
  • path — URL-адрес. Если path не указан или указан *, политика применяется ко всем путям. Зависит от регистра.
  • query — набор элементов типа key-value и key-only в произвольном порядке, разделенных &. Элементы key-value разделяются =. Зависит от регистра.
a.b.c.d
Вместо домена можно использовать адрес IPv4 вида a.b.c.d. В IP-адресе использовать подстановочные знаки нельзя. Для схемы, порта или пути — можно, см. предыдущий пункт.
[a:b:c:d:e:f:g:h]
Вместо домена можно использовать адрес IPv6, но обязательно с квадратными скобками — [a:b:c:d:e:f:g:h]. Использовать подстановочные знаки для адреса нельзя, для схемы, порта или пути — можно.
file://path
  • file — схема для указания пути к файлам.
  • path — путь должен начинаться с /. Адрес file://dir/myfile.html недопустим, правильный вариант — file:///dir/myfile.html. Подстановочные знаки не используются, за исключением варианта file:///*, который означает, что политика будет применяться к файлам по любым адресам в сети.
  • Домены и порты не указываются. Политика будет применяться к любым доменам и портам localhost. Например, шаблон file:///file.html будет соответствовать адресам file://localhost/file.html и file://mysite.com/file.html.
*
Любые URL'ы, схемы, порты и пути.

Порядок фильтрации URL'ов

Шаблоны применяются к наиболее точному совпадению URL'а. В URL'е игнорируются user:pass, разделитель # с последующим содержанием, суффиксы / и . в host.

  1. Выбираются URL'ы с максимальным совпадением host. URL'ы с неподходящими scheme или port пропускаются.
  2. Из этого списка выбираются URL'ы с максимальным совпадением path.
  3. Затем выбираются URL'ы с максимальным совпадением элементов @query.
  4. Если после такой фильтрации не осталось ни одного допустимого URL'а, в host удаляется самый левый поддомен, и алгоритм начинается заново с шага 1.
  5. Если URL соответствует шаблону, к нему применяется политика. Если ни один URL не соответствует шаблону, политика не применяется.

Недопустимые шаблоны

Шаблон Причина
[*.].mysite.com Точка перед mysite.
file://mysite.com/somefile.html В URL'е файла нельзя указывать домен.
file://somefile.html Только два / вместо необходимых трех.
http*://mysite.com Подстановочный знак должен заменять элемент целиком.
https://mysit*.com Подстановочный знак должен заменять элемент целиком.
file://somefile.* Единственно верный URL файла с подстановочным знаком — file:///*.
[*.]127.0.0.1 Использование поддоменов и подстановочного знака с IP-адресами не поддерживается.

Примеры шаблонов

  • *://mysite.com:*/path — подойдет как http://mysite.com:80/path, так и https://mysite.com:443/path.
  • [*.]mysite.com — подойдет как mysite.com, так и subdomain.mysite.com, а еще любой схеме, порту и пути.
  • [*.]ysite.com — подойдет subdomain.ysite.com, но не mysite.com .
  • file:///foo/bar.html — подойдут file://localhost/foo/bar.html и file://mysite.com/foo/bar.html.
  • file:///* — подойдет любому URL'у, который начинается с file://.
  • Схемы, порты и пути можно использовать с IP-адресами, например, https://[::1]:8080/myfile.html.