Evaluación de PAC en Jint: ayudantes ausentes y resultados de ruta
Ejecutar FindProxyForURL es un paso: el host debe implementar los ayudantes de PAC, limitar la ejecución e interpretar la lista de rutas devuelta.
Si Jint informa de que falta dnsResolve o myIpAddress al evaluar PAC, cargar más JavaScript no es necesariamente la solución. Esos ayudantes de PAC pertenecen al entorno que proporciona la aplicación anfitriona.
Antes de llamar a FindProxyForURL
Elija el conjunto de ayudantes de PAC compatible y las familias de direcciones, y luego instale esos ayudantes en el motor. Conserve sus contratos: dnsResolve recibe un nombre de host, myIpAddress no recibe argumentos y necesita una política de interfaz local, y shExpMatch usa patrones de estilo shell. Un stub que devuelve un valor cómodo puede elegir la ruta equivocada en silencio.
Con esa inicialización hecha, la llamada central puede verse así en Jint 4.4.0:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine es el Jint.Engine configurado; pacSource es el programa PAC obtenido. destination.IdnHost proporciona el nombre de host sin puerto ni ruta. Esta llamada ni recupera PAC ni abre una conexión de proxy.
Después de la llamada
Interprete un resultado como PROXY proxy.example:8080; DIRECT como una lista ordenada de candidatos de ruta y alternativa. Pasar toda la cadena como URL de proxy hace que pierda su significado. Mantenga un fallo de evaluación separado de un resultado DIRECT explícito.
Mientras se ejecuta
Configure los límites de duración, sentencias, memoria y cancelación de Jint, y exponga solo las funciones de host necesarias. Limite las devoluciones de DNS por separado: las comprobaciones de ejecución de JavaScript no hacen interrumpible una llamada de host bloqueante arbitraria. Serialice el acceso a un motor o dé al trabajo concurrente instancias con propiedad separada; los motores no son seguros para uso simultáneo.
Las implementaciones de PAC de los navegadores pueden diferir en las extensiones de ayudantes y en los detalles de URL que exponen, sobre todo para HTTPS. Coincidir con un resultado de muestra demuestra menos que coincidir con el comportamiento de enrutamiento del navegador.