Evaluacija PAC u Jintu: nedostajući pomoćnici i rezultati ruta
Pozivanje FindProxyForURL je samo jedan korak: host mora implementirati PAC pomoćnike, ograničiti izvršavanje i protumačiti vraćenu listu ruta.
Ako Jint prijavi da tokom evaluacije PAC nedostaje dnsResolve ili myIpAddress, učitavanje još JavaScripta nije nužno rješenje. Ti PAC pomoćnici pripadaju okruženju koje pruža host aplikacija.
Prije pozivanja FindProxyForURL
Izaberite podržani skup PAC pomoćnika i familije adresa, zatim instalirajte te pomoćnike u engine. Sačuvajte njihove ugovore: dnsResolve prima ime hosta, myIpAddress ne prima argumente i traži politiku lokalnog interfejsa, a shExpMatch koristi obrasce u stilu shell-a. Stub koji vraća prikladnu vrijednost može tiho izabrati pogrešnu rutu.
Kada je ta inicijalizacija obavljena, glavni poziv može izgledati ovako u Jintu 4.4.0:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine je konfigurisani Jint.Engine; pacSource je preuzeti PAC program. destination.IdnHost daje ime hosta bez porta ili putanje. Ovaj poziv niti preuzima PAC niti otvara proxy vezu.
Nakon poziva
Protumačite rezultat kao što je PROXY proxy.example:8080; DIRECT kao uređenu listu kandidata za rutu i rezervu. Prosljeđivanje cijelog tog niza kao proxy URL-a gubi njegovo značenje. Držite grešku evaluacije odvojeno od eksplicitnog rezultata DIRECT.
Dok se izvršava
Konfigurišite Jintova ograničenja trajanja, naredbi, memorije i otkazivanja i izložite samo potrebne host funkcije. Ograničite DNS povratne pozive odvojeno: provjere izvršavanja JavaScripta ne čine proizvoljan blokirajući host poziv prekidivim. Serijalizujte pristup engineu ili dajte paralelnom radu zasebno posjedovane instance; enginei nisu sigurni za istovremenu upotrebu.
PAC implementacije preglednika mogu se razlikovati po ekstenzijama pomoćnika i detaljima URL-a koje izlažu, posebno za HTTPS. Poklapanje s jednim primjernim rezultatom dokazuje manje od poklapanja s ponašanjem rutiranja preglednika.