การประเมิน PAC ใน Jint: ตัวช่วยที่หายไปและผลลัพธ์ของเส้นทาง
การเรียก FindProxyForURL เป็นเพียงขั้นตอนเดียว: โฮสต์ต้องติดตั้งตัวช่วย PAC จำกัดการทำงาน และตีความรายการเส้นทางที่ส่งกลับ
หาก Jint รายงานว่าไม่มี dnsResolve หรือ myIpAddress ขณะประเมิน PAC การโหลด JavaScript เพิ่มไม่ใช่ทางแก้เสมอไป ตัวช่วย PAC เหล่านั้นเป็นส่วนหนึ่งของสภาพแวดล้อมที่แอปพลิเคชันโฮสต์จัดให้
ก่อนเรียก FindProxyForURL
เลือกชุดตัวช่วย PAC และตระกูลแอดเดรสที่รองรับ แล้วติดตั้งตัวช่วยเหล่านั้นบนเอนจิน รักษาสัญญาของตัวช่วย: dnsResolve รับชื่อโฮสต์ myIpAddress ไม่รับอาร์กิวเมนต์และต้องมีนโยบายอินเทอร์เฟซภายใน และ shExpMatch ใช้รูปแบบสไตล์เชลล์ สตับที่คืนค่าที่สะดวกอาจเลือกเส้นทางผิดโดยไม่รู้ตัว
เมื่อการเริ่มต้นนั้นเสร็จแล้ว การเรียกหลักใน Jint 4.4.0 อาจมีลักษณะดังนี้:
var destination = new Uri(destinationUrl);
engine.Execute(pacSource);
var routeList = engine.Invoke(
"FindProxyForURL",
destinationUrl,
destination.IdnHost
).AsString();engine คือ Jint.Engine ที่กำหนดค่าไว้; pacSource คือโปรแกรม PAC ที่ดึงมา destination.IdnHost ให้ชื่อโฮสต์โดยไม่มีพอร์ตหรือพาธ การเรียกนี้ไม่ดึง PAC และไม่เปิดการเชื่อมต่อพร็อกซี
หลังการเรียก
ตีความผลลัพธ์เช่น PROXY proxy.example:8080; DIRECT เป็นรายการผู้สมัครเส้นทางและเส้นทางสำรองตามลำดับ การส่งสตริงทั้งหมดนั้นเป็น URL พร็อกซีจะทำให้ความหมายหายไป แยกความล้มเหลวของการประเมินออกจากผลลัพธ์ DIRECT ที่ชัดเจน
ขณะทำงาน
กำหนดค่าข้อจำกัดด้านระยะเวลา คำสั่ง หน่วยความจำ และการยกเลิกของ Jint และเปิดเผยเฉพาะฟังก์ชันโฮสต์ที่จำเป็น จำกัดการเรียกกลับ DNS แยกต่างหาก: การตรวจสอบการทำงานของ JavaScript ไม่ได้ทำให้การเรียกโฮสต์ที่บล็อกตามอำเภอใจสามารถถูกขัดจังหวะได้ ทำการเข้าถึงเอนจินให้เป็นลำดับ หรือให้งานที่ทำงานพร้อมกันมีอินสแตนซ์ที่เป็นเจ้าของแยกกัน เอนจินไม่ปลอดภัยสำหรับการใช้งานพร้อมกัน
การใช้งาน PAC ของเบราว์เซอร์อาจแตกต่างกันในส่วนขยายตัวช่วยและรายละเอียด URL ที่เปิดเผย โดยเฉพาะสำหรับ HTTPS การตรงกับผลลัพธ์ตัวอย่างหนึ่งรายการพิสูจน์ได้น้อยกว่าการตรงกับพฤติกรรมการกำหนดเส้นทางของเบราว์เซอร์