Jint'te PAC değerlendirmesi: eksik yardımcılar ve rota sonuçları
FindProxyForURL çağrısı yalnızca bir adımdır: ana makine PAC yardımcılarını uygulamalı, yürütmeyi kısıtlamalı ve döndürülen rota listesini yorumlamalıdır.
Jint, PAC değerlendirmesi sırasında dnsResolve veya myIpAddress öğesinin eksik olduğunu bildiriyorsa, daha fazla JavaScript yüklemek mutlaka çözüm değildir. Bu PAC yardımcıları, ana makine uygulamasının sağladığı ortama aittir.
FindProxyForURL çağrılmadan önce
Desteklenen PAC yardımcı kümesini ve adres ailelerini seçin, ardından bu yardımcıları motora kurun. Sözleşmelerini koruyun: dnsResolve bir ana makine adı alır, myIpAddress hiçbir argüman almaz ve yerel arayüz politikası gerektirir, shExpMatch ise kabuk tarzı kalıplar kullanır. Uygun bir değer döndüren bir sahte işlev, sessizce yanlış rotayı seçebilir.
Bu başlatma yapıldıktan sonra, Jint 4.4.0'te çekirdek çağrı şöyle görünebilir:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine yapılandırılmış Jint.Engine öğesidir; pacSource alınan PAC programıdır. destination.IdnHost ana makine adını bağlantı noktası veya yol olmadan verir. Bu çağrı ne PAC getirir ne de bir proxy bağlantısı açar.
Çağrıdan sonra
PROXY proxy.example:8080; DIRECT gibi bir sonucu sıralı rota adayları ve yedek listesi olarak yorumlayın. Tüm bu dizeyi proxy URL'si olarak iletmek anlamını kaybeder. Değerlendirme hatasını açık bir DIRECT sonucundan ayrı tutun.
Çalışırken
Jint'in süre, ifade, bellek ve iptal sınırlarını yapılandırın ve yalnızca gerekli ana makine işlevlerini açığa çıkarın. DNS geri çağrılarını ayrıca sınırlayın: JavaScript yürütme denetimleri, rastgele engelleyici bir ana makine çağrısını kesilebilir hale getirmez. Bir motora erişimi sıralı hale getirin veya eşzamanlı işe ayrı sahipli örnekler verin; motorlar eşzamanlı kullanım için güvenli değildir.
Tarayıcıların PAC uygulamaları, yardımcı uzantıları ve açığa çıkardıkları URL ayrıntıları bakımından farklılık gösterebilir, özellikle HTTPS için. Tek bir örnek sonuçla eşleşmek, tarayıcının yönlendirme davranışıyla eşleşmekten daha azını kanıtlar.