Kui Jint teatab PAC-i hindamisel puuduvast dnsResolve-st või myIpAddress-st, ei ole rohkema JavaScripti laadimine tingimata lahendus. Need PAC-i abifunktsioonid kuuluvad keskkonda, mille pakub hostrakendus.

Enne FindProxyForURL-i kutsumist

Valige toetatud PAC-i abifunktsioonide komplekt ja aadressiperekonnad ning seejärel paigaldage need abifunktsioonid mootorisse. Säilitage nende lepingud: dnsResolve võtab hostinime, myIpAddress ei võta argumente ja vajab kohaliku liidese poliitikat ning shExpMatch kasutab shelli-stiilis mustreid. Mugava väärtuse tagastav stub võib vaikselt valida vale marsruudi.

Pärast seda lähtestamist võib põhikuts Jint 4.4.0-s välja näha selline:

var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
    "FindProxyForURL",
    destinationUrl,
    destination.IdnHost
).AsString();

engine on konfigureeritud Jint.Engine; pacSource on hankitud PAC-i programm. destination.IdnHost annab hostinime ilma pordi ja teeta. See kuts ei hangi PAC-i ega ava puhverserveri ühendust.

Pärast kutset

Tõlgendage tulemust nagu PROXY proxy.example:8080; DIRECT järjestatud marsruudikandidaatide ja varuvaliku loendina. Kogu stringi puhverserveri URL-ina edastamine kaotab selle tähenduse. Hoidke hindamise nurjumine eraldi selgesõnalisest DIRECT tulemusest.

Töötamise ajal

Seadistage Jinti kestuse, käskude, mälu ja tühistamise piirangud ning avalikustage ainult vajalikud hostfunktsioonid. Piirake DNS-tagasihelistusi eraldi: JavaScripti täitmise kontrollid ei muuda suvalist blokeerivat hostikutset katkestatavaks. Serialiseerige juurdepääs mootorile või andke paralleelsele tööle eraldi omatavad eksemplarid; mootorid ei ole samaaegseks kasutamiseks ohutud.

Brauserite PAC-i rakendused võivad erineda abifunktsioonide laienduste ja avalikustatavate URL-i üksikasjade poolest, eriti HTTPS-i puhul. Ühe näidistulemusega sobimine tõestab vähem kui brauseri marsruutimiskäitumisega sobimine.

Seotud artiklid