Hvis Jint rapporterer en manglende dnsResolve eller myIpAddress under evaluering af PAC, er indlæsning af mere JavaScript ikke nødvendigvis løsningen. Disse PAC-hjælpere hører til det miljø, som værtapplikationen stiller til rådighed.

Før FindProxyForURL kaldes

Vælg det understøttede sæt PAC-hjælpere og adressefamilier, og installer derefter hjælperne på motoren. Bevar deres kontrakter: dnsResolve tager et værtsnavn, myIpAddress tager ingen argumenter og kræver en politik for lokale netværksgrænseflader, og shExpMatch bruger skallignende mønstre. En stub, der returnerer en bekvem værdi, kan i al stilhed vælge den forkerte rute.

Når den initialisering er udført, kan kernekaldet se sådan ud i Jint 4.4.0:

var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
    "FindProxyForURL",
    destinationUrl,
    destination.IdnHost
).AsString();

engine er den konfigurerede Jint.Engine; pacSource er det hentede PAC-program. destination.IdnHost giver værtsnavnet uden port eller sti. Dette kald henter ikke PAC og åbner ikke en proxyforbindelse.

Efter kaldet

Fortolk et resultat som PROXY proxy.example:8080; DIRECT som en ordnet liste over rutekandidater og reserve. Sendes hele strengen som proxy-URL, mister den sin betydning. Hold en evalueringsfejl adskilt fra et eksplicit DIRECT-resultat.

Mens det kører

Konfigurer Jints begrænsninger for varighed, sætninger, hukommelse og annullering, og udstil kun de nødvendige værtfunktioner. Begræns DNS-tilbagekald separat: JavaScript-udførelsestjek gør ikke et vilkårligt blokerende værtkald afbrydeligt. Serialiser adgangen til en motor, eller giv samtidigt arbejde særskilt ejede instanser; motorer er ikke sikre til samtidig brug.

Browseres PAC-implementeringer kan variere i hjælperudvidelser og i de URL-detaljer, de udstiller, især for HTTPS. At matche ét eksempelresultat beviser mindre end at matche browserens routingadfærd.

Relaterede artikler