Pokud Jint při vyhodnocování PAC hlásí chybějící dnsResolve nebo myIpAddress, načtení dalšího JavaScriptu nemusí být řešením. Tyto pomocné funkce PAC patří do prostředí, které poskytuje hostitelská aplikace.

Před voláním FindProxyForURL

Zvolte podporovanou sadu pomocných funkcí PAC a rodiny adres a poté tyto funkce nainstalujte do enginu. Zachovejte jejich smlouvy: dnsResolve přijímá název hostitele, myIpAddress nepřijímá žádné argumenty a vyžaduje zásadu místního rozhraní a shExpMatch používá vzory ve stylu shellu. Zástupná implementace vracející pohodlnou hodnotu může tiše zvolit nesprávnou trasu.

Po této inicializaci může základní volání v Jint 4.4.0 vypadat takto:

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

engine je nakonfigurovaný Jint.Engine; pacSource je načtený program PAC. destination.IdnHost dodává název hostitele bez portu a cesty. Toto volání PAC nenačítá ani neotevírá proxy připojení.

Po volání

Výsledek jako PROXY proxy.example:8080; DIRECT interpretujte jako uspořádaný seznam kandidátů trasy a záložní možnosti. Předání celého řetězce jako proxy URL ztrácí jeho význam. Selhání vyhodnocení odlišujte od výslovného výsledku DIRECT.

Během běhu

Nastavte omezení Jint pro dobu běhu, počet příkazů, paměť a zrušení a zpřístupněte pouze potřebné funkce hostitele. Omezte DNS zpětná volání samostatně: kontroly provádění JavaScriptu nečiní libovolné blokující volání hostitele přerušitelným. Serializujte přístup k enginu nebo dejte souběžné práci samostatně vlastněné instance; enginy nejsou bezpečné pro souběžné použití.

Implementace PAC v prohlížečích se mohou lišit v rozšířeních pomocných funkcí a v podrobnostech URL, které zpřístupňují, zejména u HTTPS. Shoda s jedním vzorovým výsledkem dokazuje méně než shoda s chováním směrování prohlížeče.

Související články