Обробка збою 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";
}
Цей приклад надсилає нерозв'язані імена через проксі. Це вибір політики, а не універсально безпечне значення за замовчуванням. Він може бути корисним, коли проксі має резолвер або уявлення про мережу, яких немає в клієнта. Мережа, що вимагає локального розв'язання, потребує іншого явного результату.
Розв'яжіть один раз і використовуйте результат повторно. Так рішення залишається прив'язаним до одного значення і не доводиться повторювати потенційно повільні допоміжні виклики.
Перевірте й фактичного споживача PAC. Застарілі допоміжні функції IPv4 і розширені функції IPv6 мають різні контракти. Правило, перевірене з реалізацією одного браузера, не доводить підтримку в кожній програмі, що використовує той самий PAC URL.
Якщо вимога — лише спрямовувати відомий корпоративний суфікс, правило за іменем хоста може повністю уникнути запиту. До класифікації за адресою вдавайтеся тоді, коли адреса справді потрібна політиці.