PAC-проценка со Jint: помошници што недостасуваат и резултати од рути
Повикот на FindProxyForURL е само еден чекор: домаќинот мора да ги имплементира PAC-помошниците, да го ограничи извршувањето и да ја протолкува вратената листа на рути.
Ако 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.example:8080; DIRECT како подредена листа на кандидати за рута и резерва. Пренесувањето на целиот тој стринг како URL на посредник го губи неговото значење. Одржувајте ја грешката во проценката одвоена од експлицитниот резултат DIRECT.
Додека работи
Конфигурирајте ги ограничувањата на времетраење, искази, меморија и откажување на Jint и изложете ги само потребните функции на домаќинот. Ограничете ги DNS-повратните повици одделно: проверките при извршување на JavaScript не го прават произволен блокирачки повик на домаќин прекинат. Серијализирајте го пристапот до машината или дајте им на паралелните работи одделно поседувани примероци; машините не се безбедни за истовремена употреба.
PAC-имплементациите на прелистувачите можат да се разликуваат по помошни екстензии и по деталите за URL што ги изложуваат, особено за HTTPS. Совпаѓањето со еден примерок резултат значи помалку отколку совпаѓање со однесувањето на рутирањето на прелистувачот.