В PAC shExpMatch использует шаблоны в стиле оболочки. Для поддоменов example.com:

if (shExpMatch(host, "*.example.com")) {
    return "PROXY proxy.example:8080";
}

В этих возвращаемых значениях используйте конечные точки HTTP, выбранные политикой; список HTTP-прокси предоставляет кандидатов для разрешённых публичных маршрутов. Звёздочка соответствует последовательности символов. Это не оператор повторения регулярного выражения, поэтому похожий на регулярное выражение .*example.com меняет смысл.

Указывайте точное имя родительского домена явно, если оно входит в политику:

if (host === "example.com" || shExpMatch(host, "*.example.com")) {
    return "PROXY proxy.example:8080";
}

Использование *example.com вместо этого приняло бы также имена, оканчивающиеся на эти буквы без разделяющей точки. Это расширяет множество за пределы предполагаемой границы домена.

Переносимая основа шаблонов PAC включает * и ?; классы символов различаются в зависимости от реализации. Регулярное выражение JavaScript вместо этого использует test() и собственные правила привязки и экранирования.

Сопоставляйте с предполагаемым вводом. host — это имя хоста, а url включает схему и мог быть очищен. Правило домена не должно случайно зависеть от пути, который браузер никогда не предоставляет.

Похожие статьи