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.

Artigos relacionados