Håndtering av DNS-feil inne i en PAC-regel
La et mislykket PAC-DNS-oppslag få sin egen policygren i stedet for å behandle det som en bekreftet adresse utenfor det lokale nettverket.
Et mislykket oppslag beviser ikke at målet ligger utenfor ditt private nettverk. Det beviser at denne PAC-vurderingen ikke fikk adressen den trengte.
Denne forskjellen er viktig når dnsResolve() forer en isInNet()-regel. Chromiums PAC-implementasjon returnerer null når oppslaget mislykkes. Ikke bygg feilgrenen på erindringen om at resultatet alltid er en tom streng.
function FindProxyForURL(url, host) {
var address = dnsResolve(host);
if (!address) {
return "PROXY proxy.example:8080";
}
if (isInNet(address, "10.40.0.0", "255.255.0.0")) {
return "DIRECT";
}
return "PROXY proxy.example:8080";
}
Dette eksempelet sender uoppslåtte navn til proxyen. Det er et policyvalg, ikke en universelt trygg standard. Det kan være nyttig når proxyen har en oppløser eller et nettverksbilde klienten ikke har. Et nettverk som krever lokal oppløsning trenger et annet eksplisitt utfall.
Løs opp én gang og gjenbruk resultatet. Det holder beslutningen knyttet til én verdi og unngår å gjenta potensielt langsomme hjelpekall.
Kontroller også den faktiske PAC-brukeren. Eldre IPv4-hjelpere og utvidede IPv6-hjelpere har forskjellige kontrakter. En regel som er testet med én nettlesers implementasjon, beviser ikke støtte i alle programmer som bruker samme PAC-URL.
Hvis kravet bare er å rute et kjent selskapsuffiks, kan en vertsnavnregel unngå oppslaget helt. Bruk adressebasert klassifisering når adressen er informasjon som policyen virkelig trenger.