Vyhodnocovanie PAC v Jinte: chýbajúce pomocníky a výsledky trás
Volanie FindProxyForURL je len jeden krok: hostiteľ musí implementovať pomocníkov PAC, obmedziť vykonávanie a interpretovať vrátený zoznam trás.
Ak Jint hlási, že pri vyhodnocovaní PAC chýba dnsResolve alebo myIpAddress, načítanie ďalšieho JavaScriptu nemusí byť riešením. Títo pomocníci PAC patria k prostrediu, ktoré poskytuje hostiteľská aplikácia.
Pred volaním FindProxyForURL
Vyberte podporovanú sadu pomocníkov PAC a rodiny adries, potom týchto pomocníkov nainštalujte do enginu. Zachovajte ich zmluvy: dnsResolve prijíma názov hostiteľa, myIpAddress neprijíma žiadne argumenty a vyžaduje politiku lokálneho rozhrania a shExpMatch používa vzory v štýle shellu. Zástupca, ktorý vracia pohodlnú hodnotu, môže potichu zvoliť nesprávnu trasu.
Po tejto inicializácii môže hlavné volanie vyzerať takto v Jinte 4.4.0:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine je nakonfigurovaný Jint.Engine; pacSource je získaný program PAC. destination.IdnHost poskytuje názov hostiteľa bez portu alebo cesty. Toto volanie ani nezískava PAC, ani neotvára proxy pripojenie.
Po volaní
Výsledok ako PROXY proxy.example:8080; DIRECT interpretujte ako usporiadaný zoznam kandidátov trasy a zálohy. Odovzdanie celého tohto reťazca ako proxy URL stráca jeho význam. Chybu vyhodnotenia držte oddelene od explicitného výsledku DIRECT.
Počas behu
Nakonfigurujte obmedzenia Jintu na trvanie, príkazy, pamäť a zrušenie a sprístupnite iba potrebné hostiteľské funkcie. Obmedzte spätné volania DNS oddelene: kontroly vykonávania JavaScriptu nerobia ľubovoľné blokujúce volanie hostiteľa prerušiteľným. Serializujte prístup k enginu alebo dajte súbežnej práci samostatne vlastnené inštancie; enginy nie sú bezpečné na súčasné použitie.
Implementácie PAC v prehliadačoch sa môžu líšiť v rozšíreniach pomocníkov a v detailoch URL, ktoré sprístupňujú, najmä pre HTTPS. Zhoda s jedným vzorovým výsledkom dokazuje menej ako zhoda so správaním smerovania prehliadača.