Jint PAC-evaluering: manglende hjælpere og ruteresultater
Kørsel af FindProxyForURL er ét trin: værten skal implementere PAC-hjælpere, begrænse udførelsen og fortolke den returnerede rutteliste.
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.