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.

Povezani članci