Avaluació de PAC a Jint: auxiliars que falten i resultats de ruta
Executar FindProxyForURL és un pas: l'amfitrió ha d'implementar els auxiliars PAC, limitar l'execució i interpretar la llista de rutes retornada.
Si Jint informa que falta dnsResolve o myIpAddress mentre avalua PAC, carregar més JavaScript no és necessàriament la solució. Aquests auxiliars PAC pertanyen a l'entorn que proporciona l'aplicació amfitriona.
Abans de cridar FindProxyForURL
Trieu el conjunt d'auxiliars PAC compatible i les famílies d'adreces, i després instal·leu aquests auxiliars al motor. Preserveu-ne els contractes: dnsResolve rep un nom d'amfitrió, myIpAddress no rep arguments i necessita una política d'interfície local, i shExpMatch fa servir patrons d'estil shell. Un stub que retorna un valor convenient pot triar silenciosament la ruta incorrecta.
Amb aquesta inicialització feta, la crida central pot semblar així a Jint 4.4.0:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine és el Jint.Engine configurat; pacSource és el programa PAC obtingut. destination.IdnHost proporciona el nom d'amfitrió sense port ni camí. Aquesta crida no obté PAC ni obre cap connexió de servidor intermediari.
Després de la crida
Interpreteu un resultat com PROXY proxy.example:8080; DIRECT com una llista ordenada de candidats de ruta i alternativa. Passar tota la cadena com a URL de servidor intermediari en fa perdre el significat. Mantingueu un error d'avaluació separat d'un resultat explícit DIRECT.
Mentre s'executa
Configureu les restriccions de durada, sentències, memòria i cancel·lació de Jint, i exposeu només les funcions d'amfitrió necessàries. Limiteu les devolucions de trucada DNS per separat: les comprovacions d'execució de JavaScript no fan interrompible una crida d'amfitrió bloquejant arbitrària. Serialitzeu l'accés a un motor o doneu a la feina concurrent instàncies amb propietat separada; els motors no són segurs per a ús simultani.
Les implementacions PAC dels navegadors poden diferir en extensions d'auxiliars i en els detalls d'URL que exposen, sobretot per a HTTPS. Coincidir amb un resultat de mostra demostra menys que coincidir amb el comportament d'encaminament del navegador.