Jint PAC-kiértékelés: hiányzó segédfüggvények és útvonaleredmények
A FindProxyForURL futtatása egyetlen lépés: a gazdának meg kell valósítania a PAC segédfüggvényeket, korlátoznia kell a végrehajtást és értelmeznie kell a visszakapott útvonallistát.
Ha a Jint hiányzó dnsResolve vagy myIpAddress függvényt jelez a PAC kiértékelése közben, a több JavaScript betöltése nem feltétlenül a megoldás. Ezek a PAC segédfüggvények a gazdaalkalmazás által biztosított környezethez tartoznak.
A FindProxyForURL hívása előtt
Válassza ki a támogatott PAC segédfüggvény-készletet és címcsaládokat, majd telepítse ezeket a segédfüggvényeket a motorba. Tartsa be a szerződéseiket: a dnsResolve gazdanevet kap, a myIpAddress nem kap argumentumot és helyi interfész-szabályzatot igényel, a shExpMatch pedig shell stílusú mintákat használ. Egy kényelmes értéket visszaadó helyettesítő csendben a rossz útvonalat választhatja.
Az inicializálás után a fő hívás így nézhet ki a Jint 4.4.0-ban:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();A engine a beállított Jint.Engine; a pacSource a lekért PAC program. A destination.IdnHost port és útvonal nélkül adja a gazdanevet. Ez a hívás nem kér le PAC-ot és nem nyit proxykapcsolatot.
A hívás után
Értelmezze az PROXY proxy.example:8080; DIRECT eredményt útvonaljelöltek és tartalék rendezett listájaként. A teljes karakterlánc proxy URL-ként való átadása elveszíti a jelentését. Különítse el a kiértékelési hibát a kifejezett DIRECT eredménytől.
Futás közben
Állítsa be a Jint időtartam-, utasítás-, memória- és megszakítási korlátait, és csak a szükséges gazdafüggvényeket tegye elérhetővé. A DNS-visszahívásokat külön korlátozza: a JavaScript-végrehajtás ellenőrzései nem teszik megszakíthatóvá egy tetszőleges blokkoló gazdahívást. Sorosítsa a motorhoz való hozzáférést, vagy adjon a párhuzamos munkának külön tulajdonolt példányokat; a motorok nem biztonságosak egyidejű használatra.
A böngészők PAC-megvalósításai eltérhetnek a segédfüggvény-bővítményekben és a közzétett URL-részletekben, különösen HTTPS esetén. Egyetlen mintapélda eredményének egyezése kevesebbet bizonyít, mint a böngésző útválasztási viselkedésének egyezése.