Jint-PAC-Auswertung: fehlende Helfer und Routenergebnisse
FindProxyForURL auszuführen ist ein Schritt: Der Host muss PAC-Helfer bereitstellen, die Ausführung begrenzen und die zurückgegebene Routenliste auslegen.
Meldet Jint beim Auswerten von PAC einen fehlenden dnsResolve oder myIpAddress, ist das Nachladen von weiterem JavaScript nicht zwangsläufig die Lösung. Diese PAC-Helfer gehören zur Umgebung, die die Hostanwendung bereitstellt.
Vor dem Aufruf von FindProxyForURL
Wählen Sie die unterstützte PAC-Helfersammlung und Adressfamilien und installieren Sie diese Helfer dann in der Engine. Achten Sie auf ihre Verträge: dnsResolve nimmt einen Hostnamen, myIpAddress nimmt keine Argumente und braucht eine Richtlinie für lokale Schnittstellen, und shExpMatch verwendet Muster im Shell-Stil. Ein Stub, der einen bequemen Wert zurückgibt, kann stillschweigend die falsche Route wählen.
Nach dieser Initialisierung kann der Kernaufruf in Jint 4.4.0 so aussehen:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine ist die konfigurierte Jint.Engine; pacSource ist das abgerufene PAC-Programm. destination.IdnHost liefert den Hostnamen ohne Port oder Pfad. Dieser Aufruf ruft kein PAC ab und öffnet keine Proxyverbindung.
Nach dem Aufruf
Deuten Sie ein Ergebnis wie PROXY proxy.example:8080; DIRECT als geordnete Liste von Routenkandidaten und Rückfall. Wird die ganze Zeichenkette als Proxy-URL übergeben, geht ihre Bedeutung verloren. Halten Sie einen Auswertungsfehler von einem ausdrücklichen DIRECT-Ergebnis getrennt.
Während der Ausführung
Konfigurieren Sie Jints Grenzen für Dauer, Anweisungen, Speicher und Abbruch und legen Sie nur die benötigten Hostfunktionen offen. Begrenzen Sie DNS-Rückrufe gesondert: Prüfungen der JavaScript-Ausführung machen einen beliebigen blockierenden Hostaufruf nicht unterbrechbar. Serialisieren Sie den Zugriff auf eine Engine oder geben Sie gleichzeitiger Arbeit getrennt gehörende Instanzen; Engines sind für gleichzeitige Nutzung nicht sicher.
PAC-Implementierungen in Browsern können sich bei Helfererweiterungen und den offengelegten URL-Details unterscheiden, besonders bei HTTPS. Ein einzelnes Beispielergebnis zu treffen belegt weniger, als das Routingverhalten des Browsers zu treffen.