Jika Jint melaporkan dnsResolve atau myIpAddress tiada semasa menilai PAC, memuatkan lebih banyak JavaScript bukan semestinya penyelesaiannya. Pembantu PAC itu milik persekitaran yang disediakan oleh aplikasi hos.

Sebelum memanggil FindProxyForURL

Pilih set pembantu PAC dan keluarga alamat yang disokong, kemudian pasang pembantu tersebut pada enjin. Kekalkan kontraknya: dnsResolve menerima nama hos, myIpAddress tidak menerima argumen dan memerlukan dasar antara muka tempatan, dan shExpMatch menggunakan corak gaya shell. Stub yang mengembalikan nilai mudah mungkin memilih laluan yang salah secara senyap.

Setelah permulaan itu selesai, panggilan teras boleh kelihatan seperti ini dalam Jint 4.4.0:

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

engine ialah Jint.Engine yang dikonfigurasikan; pacSource ialah program PAC yang diperoleh. destination.IdnHost membekalkan nama hos tanpa port atau laluan. Panggilan ini tidak mengambil PAC dan tidak membuka sambungan proksi.

Selepas panggilan

Tafsirkan hasil seperti PROXY proxy.example:8080; DIRECT sebagai senarai calon laluan dan sandaran yang tersusun. Menghantar keseluruhan rentetan itu sebagai URL proksi menghilangkan maksudnya. Pastikan kegagalan penilaian berbeza daripada hasil DIRECT yang jelas.

Semasa ia berjalan

Konfigurasikan kekangan tempoh, pernyataan, memori dan pembatalan Jint, dan dedahkan hanya fungsi hos yang diperlukan. Hadkan panggilan balik DNS secara berasingan: semakan pelaksanaan JavaScript tidak menjadikan panggilan hos penyekat sewenang-wenangnya boleh diganggu. Siri akses kepada enjin atau berikan kerja serentak instans yang dimiliki secara berasingan; enjin tidak selamat untuk penggunaan serentak.

Pelaksanaan PAC pelayar boleh berbeza dalam sambungan pembantu dan butiran URL yang didedahkan, terutamanya untuk HTTPS. Memadankan satu hasil sampel membuktikan kurang daripada memadankan tingkah laku penghalaan pelayar.

Artikel berkaitan