Avaliación de PAC en Jint: axudantes ausentes e resultados de ruta
Executar FindProxyForURL é un paso: o hóspede debe implementar os axudantes de PAC, limitar a execución e interpretar a lista de rutas devolta.
Se Jint informa de que falta dnsResolve ou myIpAddress ao avaliar PAC, cargar máis JavaScript non é necesariamente a solución. Eses axudantes de PAC pertencen á contorna que fornece a aplicación hóspede.
Antes de chamar a FindProxyForURL
Escolla o conxunto de axudantes de PAC compatible e as familias de enderezos, e despois instale eses axudantes no motor. Conserve os seus contratos: dnsResolve recibe un nome de hóspede, myIpAddress non recibe argumentos e precisa unha política de interface local, e shExpMatch usa patróns de estilo shell. Un stub que devolve un valor cómodo pode escoller a ruta incorrecta en silencio.
Con esa inicialización feita, a chamada central pode 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 é o Jint.Engine configurado; pacSource é o programa PAC obtido. destination.IdnHost fornece o nome de hóspede sen porto nin ruta. Esta chamada nin obtén PAC nin abre unha conexión de proxy.
Despois da chamada
Interprete un resultado como PROXY proxy.example:8080; DIRECT como unha lista ordenada de candidatos de ruta e alternativa. Pasar toda a cadea como URL de proxy fai que perda o seu significado. Manteña un fallo de avaliación separado dun resultado DIRECT explícito.
Mentres se executa
Configure os límites de duración, sentenzas, memoria e cancelación de Jint, e expoña só as funcións de hóspede necesarias. Limite as devolucións de DNS por separado: as comprobacións de execución de JavaScript non fan interrompible unha chamada de hóspede bloqueante arbitraria. Serialice o acceso a un motor ou dea ao traballo concorrente instancias con propiedade separada; os motores non son seguros para uso simultáneo.
As implementacións de PAC dos navegadores poden diferir nas extensións de axudantes e nos detalles de URL que expoñen, sobre todo para HTTPS. Coincidir cun resultado de mostra demostra menos que coincidir co comportamento de encamiñamento do navegador.