shExpMatch в PAC использует шаблоны, а не регулярные выражения
Правило прокси может выглядеть правильным, но никогда не срабатывать, потому что shExpMatch и регулярные выражения JavaScript используют разные языки шаблонов.
В 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 включает схему и мог быть очищен. Правило домена не должно случайно зависеть от пути, который браузер никогда не предоставляет.