PAC vertinimas su Jint: trūkstami pagalbininkai ir maršrutų rezultatai
Iškvietimas FindProxyForURL yra tik vienas žingsnis: priegloba turi įgyvendinti PAC pagalbininkus, apriboti vykdymą ir interpretuoti grąžintą maršrutų sąrašą.
Jei Jint praneša, kad vertinant PAC trūksta dnsResolve arba myIpAddress, daugiau JavaScript įkėlimas nebūtinai yra sprendimas. Šie PAC pagalbininkai priklauso aplinkai, kurią suteikia prieglobos programa.
Prieš kviečiant FindProxyForURL
Pasirinkite palaikomą PAC pagalbininkų rinkinį ir adresų šeimas, tada įdiekite tuos pagalbininkus į variklį. Išsaugokite jų sutartis: dnsResolve priima pagrindinio kompiuterio vardą, myIpAddress nepriima argumentų ir reikalauja vietinės sąsajos politikos, o shExpMatch naudoja apvalkalo tipo šablonus. Stub, grąžinantis patogią reikšmę, gali tyliai pasirinkti neteisingą maršrutą.
Atlikus šią inicializaciją, pagrindinis kvietimas gali atrodyti taip Jint 4.4.0:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine yra sukonfigūruotas Jint.Engine; pacSource yra gauta PAC programa. destination.IdnHost pateikia pagrindinio kompiuterio vardą be prievado ar kelio. Šis kvietimas nei gauna PAC, nei atidaro tarpinio serverio ryšį.
Po kvietimo
Rezultatą, pavyzdžiui, PROXY proxy.example:8080; DIRECT, interpretuokite kaip tvarkingą maršruto kandidatų ir atsarginio maršruto sąrašą. Perdavus visą šią eilutę kaip tarpinio serverio URL, prarandama jos prasmė. Vertinimo klaidą atskirkite nuo aiškaus DIRECT rezultato.
Kol jis veikia
Sukonfigūruokite Jint trukmės, teiginių, atminties ir atšaukimo apribojimus bei atskleiskite tik reikalingas prieglobos funkcijas. DNS atgalinius kvietimus apribokite atskirai: JavaScript vykdymo patikros nepadaro savavališko blokuojančio prieglobos kvietimo nutraukiamo. Nuosekliai apribokite prieigą prie variklio arba suteikite lygiagrečiam darbui atskirai valdomus egzempliorius; varikliai nėra saugūs naudoti vienu metu.
Naršyklės PAC įgyvendinimai gali skirtis pagalbininkų plėtiniais ir atskleidžiamomis URL detalėmis, ypač HTTPS atveju. Vieno pavyzdinio rezultato atitikimas reiškia mažiau nei naršyklės maršrutizavimo elgsenos atitikimas.