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