Ако Jint пријави да током процене PAC-а недостаје dnsResolve или myIpAddress, учитавање још JavaScript-а није нужно решење. Ти PAC помоћници припадају окружењу које пружа хост апликација.

Пре позивања FindProxyForURL

Изаберите подржани скуп PAC помоћника и фамилије адреса, затим инсталирајте те помоћнике у мотор. Сачувајте њихове уговоре: dnsResolve прима име хоста, myIpAddress не прима аргументе и тражи политику локалног интерфејса, а shExpMatch користи обрасце у стилу шкољке. Замена која враћа прикладну вредност може тихо изабрати погрешну руту.

Када је та иницијализација обављена, главни позив може изгледати овако у Jint-у 4.4.0:

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

engine је конфигурисани Jint.Engine; pacSource је преузети PAC програм. destination.IdnHost даје име хоста без порта или путање. Овај позив нити преузима PAC нити отвара proxy везу.

Након позива

Протумачите резултат као што је PROXY proxy.example:8080; DIRECT као уређену листу кандидата за руту и резерву. Прослеђивање целог тог низа као proxy URL-а губи његово значење. Држите грешку процене одвојено од експлицитног резултата DIRECT.

Док се извршава

Конфигуришите Jint-ова ограничења трајања, наредби, меморије и отказивања и изложите само потребне хост функције. Ограничите DNS повратне позиве одвојено: провере извршавања JavaScript-а не чине произвољан блокирајући хост позив прекидивим. Серијализујте приступ мотору или дајте паралелном раду засебно поседоване инстанце; мотори нису безбедни за истовремену употребу.

PAC имплементације прегледача могу се разликовати по екстензијама помоћника и детаљима URL-а које излажу, посебно за HTTPS. Поклапање са једним примерним резултатом доказује мање од поклапања са понашањем рутирања прегледача.

Повезани чланци