shExpMatch w PAC używa symboli wieloznacznych, a nie wyrażeń regularnych
Reguła proxy może wyglądać poprawnie, ale nigdy nie pasować, ponieważ shExpMatch i wyrażenia regularne JavaScript używają różnych języków wzorców.
W PAC shExpMatch używa symboli wieloznacznych w stylu powłoki. Dla subdomen example.com:
if (shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}W tych zwracanych wartościach używaj punktów końcowych HTTP wybranych przez politykę; lista proxy HTTP dostarcza kandydatów dla dozwolonych tras publicznych. Gwiazdka pasuje do sekwencji znaków. Nie jest operatorem powtórzenia wyrażenia regularnego, więc przypominający regex .*example.com zmienia znaczenie.
Gdy dokładna nazwa nadrzędna należy do polityki, uwzględnij ją jawnie:
if (host === "example.com" || shExpMatch(host, "*.example.com")) {
return "PROXY proxy.example:8080";
}Użycie *example.com zamiast tego akceptowałoby także nazwy kończące się tymi literami bez kropki rozdzielającej. To rozszerza zbiór poza zamierzoną granicę domeny.
Przenośna podstawa symboli wieloznacznych PAC obejmuje * i ?; klasy znaków różnią się w zależności od implementacji. Regex JavaScriptu używa natomiast test() oraz własnych reguł zakotwiczania i ucieczki.
Dopasuj zamierzone dane wejściowe. host to nazwa hosta, natomiast url zawiera schemat i mogła zostać oczyszczona. Reguła domeny nie powinna przypadkowo zależeć od ścieżki, której przeglądarka nigdy nie dostarcza.