Jint PAC evaluacija: nedostajući pomoćnici i rezultati ruta
Izvršavanje FindProxyForURL je jedan korak: host mora implementirati PAC pomoćnike, ograničiti izvršavanje i protumačiti vraćenu listu ruta.
Ako Jint prijavi nedostajući dnsResolve ili myIpAddress tokom evaluacije PAC-a, učitavanje još JavaScripta nije nužno rješenje. Ti PAC pomoćnici pripadaju okruženju koje pruža host aplikacija.
Prije poziva FindProxyForURL
Odaberite podržani skup PAC pomoćnika i porodice adresa, zatim instalirajte te pomoćnike na engine. Očuvajte njihove ugovore: dnsResolve prima ime hosta, myIpAddress ne prima argumente i zahtijeva politiku lokalnog interfejsa, a shExpMatch koristi obrasce u stilu shellda. Stub koji vraća zgodnu vrijednost može tiho odabrati pogrešnu rutu.
Kada je ta inicijalizacija obavljena, osnovni poziv u Jint 4.4.0 može izgledati ovako:
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 poput PROXY proxy.example:8080; DIRECT kao uređenu listu kandidata ruta i rezervnu opciju. Prosljeđivanje cijelog tog niza kao proxy URL-a gubi njegovo značenje. Razlikujte neuspjeh evaluacije od eksplicitnog rezultata DIRECT.
Dok se izvršava
Konfigurišite Jint 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. Serijalizirajte pristup engineu ili paralelnom radu dajte zasebno posjedovane instance; enginei nisu sigurni za istovremenu upotrebu.
Implementacije PAC-a u preglednicima mogu se razlikovati po proširenjima pomoćnika i detaljima URL-a koje izlažu, posebno za HTTPS. Podudaranje s jednim primjerom rezultata dokazuje manje od podudaranja s ponašanjem usmjeravanja preglednika.