טיפול בכשל DNS בתוך כלל PAC
העניקו לחיפוש PAC DNS שנכשל ענף מדיניות משלו במקום להתייחס אליו ככתובת מאומתת מחוץ לרשת המקומית.
חיפוש שנכשל אינו מוכיח שהיעד נמצא מחוץ לרשת הפרטית שלכם. הוא מוכיח שההערכה הזו של PAC לא קיבלה את הכתובת שהייתה דרושה לה.
ההבחנה הזו חשובה כאשר dnsResolve() מזין כלל isInNet(). המימוש של PAC ב-Chromium מחזיר null כאשר הפענוח נכשל. אל תבנו את ענף הכשל על זיכרון שהתוצאה היא תמיד מחרוזת ריקה.
function FindProxyForURL(url, host) {
var address = dnsResolve(host);
if (!address) {
return "PROXY proxy.example:8080";
}
if (isInNet(address, "10.40.0.0", "255.255.0.0")) {
return "DIRECT";
}
return "PROXY proxy.example:8080";
}
הדוגמה הזו שולחת שמות שלא פוענחו אל ה-proxy. זו בחירת מדיניות, לא ברירת מחדל בטוחה אוניברסאלית. היא יכולה להועיל כאשר ל-proxy יש פותר או תצוגת רשת שאין ללקוח. רשת שדורשת פענוח מקומי זקוקה לתוצאה מפורשת אחרת.
פענחו פעם אחת ועשו שימוש חוזר בתוצאה. כך ההחלטה נשארת קשורה לערך אחד ונמנעת חזרה על קריאות עזר שעלולות להיות איטיות.
בדקו גם את הצרכן האמיתי של PAC. לפונקציות העזר הוותיקות של IPv4 ולפונקציות העזר המורחבות של IPv6 יש חוזים שונים. כלל שנבדק עם המימוש של דפדפן אחד אינו מוכיח תמיכה בכל יישום שמשתמש באותו PAC URL.
אם הדרישה היא רק לנתב סיומת חברה מוכרת, כלל שם מארח יכול להימנע מהחיפוש לגמרי. פנו לסיווג מבוסס כתובת כאשר הכתובת היא מידע שהמדיניות באמת זקוקה לו.