Menangani kegagalan DNS di dalam aturan PAC
Beri pencarian DNS PAC yang gagal cabang kebijakan sendiri, bukan memperlakukannya sebagai alamat terverifikasi di luar jaringan lokal.
Pencarian yang gagal tidak membuktikan bahwa tujuan berada di luar jaringan pribadi Anda. Itu membuktikan bahwa evaluasi PAC ini tidak memperoleh alamat yang dibutuhkannya.
Perbedaan itu penting ketika dnsResolve() memberi masukan ke aturan isInNet(). Implementasi PAC Chromium mengembalikan null ketika resolusi gagal. Jangan membangun cabang kegagalan berdasarkan ingatan bahwa hasilnya selalu string kosong.
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";
}
Contoh ini mengirim nama yang belum terselesaikan ke proxy. Itu pilihan kebijakan, bukan default aman yang universal. Bisa berguna bila proxy memiliki resolver atau pandangan jaringan yang tidak dimiliki klien. Jaringan yang menuntut resolusi lokal memerlukan hasil eksplisit yang berbeda.
Selesaikan sekali dan gunakan ulang hasilnya. Itu menjaga keputusan terikat pada satu nilai dan menghindari pengulangan panggilan pembantu yang mungkin lambat.
Periksa juga konsumen PAC yang sebenarnya. Pembantu IPv4 lama dan pembantu IPv6 yang diperluas memiliki kontrak berbeda. Aturan yang diuji dengan implementasi satu peramban tidak membuktikan dukungan di setiap aplikasi yang memakai URL PAC yang sama.
Jika kebutuhannya hanya merutekan sufiks perusahaan yang dikenal, aturan nama host dapat menghindari pencarian sepenuhnya. Gunakan klasifikasi berbasis alamat ketika alamat adalah informasi yang benar-benar dibutuhkan kebijakan.