Vrednotenje PAC v Jintu: manjkajoči pomočniki in rezultati poti
Klic FindProxyForURL je le en korak: gostitelj mora implementirati pomočnike PAC, omejiti izvajanje in razložiti vrnjeni seznam poti.
Če Jint med vrednotenjem PAC sporoči, da manjka dnsResolve ali myIpAddress, nalaganje več JavaScripta ni nujno rešitev. Ti pomočniki PAC spadajo v okolje, ki ga zagotavlja gostiteljska aplikacija.
Pred klicem FindProxyForURL
Izberite podprt nabor pomočnikov PAC in družine naslovov, nato te pomočnike namestite v pogon. Ohranite njihove pogodbe: dnsResolve sprejme ime gostitelja, myIpAddress ne sprejme argumentov in potrebuje politiko lokalnega vmesnika, shExpMatch pa uporablja vzorce v slogu lupine. Nadomestek, ki vrne priročno vrednost, lahko tiho izbere napačno pot.
Ko je ta inicializacija opravljena, je lahko glavni klic v Jintu 4.4.0 videti takole:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine je konfigurirani Jint.Engine; pacSource je pridobljeni program PAC. destination.IdnHost zagotovi ime gostitelja brez vrat ali poti. Ta klic ne pridobi PAC in ne odpre proxy povezave.
Po klicu
Rezultat, kot je PROXY proxy.example:8080; DIRECT, razložite kot urejen seznam kandidatov za pot in rezervo. Če celoten niz posredujete kot proxy URL, izgubi pomen. Napako vrednotenja ločite od izrecnega rezultata DIRECT.
Med izvajanjem
Nastavite Jintove omejitve trajanja, stavkov, pomnilnika in preklica ter izpostavite samo potrebne gostiteljske funkcije. Povratne klice DNS omejite ločeno: preverjanja izvajanja JavaScripta ne naredijo poljubnega blokirajočega klica gostitelja prekinljivega. Serializirajte dostop do pogona ali dajte sočasnemu delu ločeno lastništvo primerkov; pogoni niso varni za hkratno uporabo.
Izvedbe PAC v brskalnikih se lahko razlikujejo v razširitvah pomočnikov in podrobnostih URL, ki jih izpostavljajo, zlasti za HTTPS. Ujemanje z enim vzorčnim rezultatom dokaže manj kot ujemanje z usmerjevalnim vedenjem brskalnika.