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