As Jint 'n ontbrekende dnsResolve of myIpAddress rapporteer terwyl PAC geëvalueer word, is die laai van meer JavaScript nie noodwendig die oplossing nie. Daardie PAC-helpers hoort by die omgewing wat die gasheerprogram verskaf.

Voordat FindProxyForURL geroep word

Kies die ondersteunde PAC-helperstel en adresfamilies, en installeer dan daardie helpers op die enjin. Handhaaf hul kontrakte: dnsResolve neem 'n gasheernaam, myIpAddress neem geen argumente nie en benodig 'n beleid vir die plaaslike koppelvlak, en shExpMatch gebruik patrone in skulpstyl. 'n Stub wat 'n gerieflike waarde teruggee, kan stilweg die verkeerde roete kies.

Met daardie inisialisering gedoen, kan die kernroep so lyk in Jint 4.4.0:

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

engine is die gekonfigureerde Jint.Engine; pacSource is die opgeroepde PAC-program. destination.IdnHost verskaf die gasheernaam sonder 'n poort of pad. Hierdie roep haal nie PAC op nie en open nie 'n proxy-verbinding nie.

Na die roep

Interpreteer 'n resultaat soos PROXY proxy.example:8080; DIRECT as 'n geordende lys van roetekandidate en terugval. Om daardie hele string as 'n proxy-URL deur te gee, verloor sy betekenis. Hou 'n evalueringsfout apart van 'n eksplisiete DIRECT-resultaat.

Terwyl dit loop

Konfigureer Jint se beperkings op duur, stellings, geheue en kansellasie, en stel slegs die vereiste gasheerfunksies bloot. Beperk DNS-terugroepe apart: JavaScript-uitvoeringskontroles maak nie 'n willekeurige blokkerende gasheeroep onderbreekbaar nie. Serialiseer toegang tot 'n enjin of gee gelyktydige werk afsonderlik besitde instansies; enjins is nie veilig vir gelyktydige gebruik nie.

Blaaier-PAC-implementerings kan verskil in helper-uitbreidings en die URL-besonderhede wat hulle blootstel, veral vir HTTPS. Om een voorbeeldresultaat te pas, bevestig minder as om die blaaier se roeteringgedrag te pas.

Verwante artikels