Xử lý lỗi DNS bên trong một quy tắc PAC
Hãy cho một truy vấn PAC DNS thất bại nhánh chính sách riêng thay vì coi nó là địa chỉ đã xác minh bên ngoài mạng nội bộ.
Một truy vấn thất bại không chứng minh rằng đích đến nằm ngoài mạng riêng của bạn. Nó chỉ chứng minh rằng lần đánh giá PAC này không lấy được địa chỉ cần thiết.
Sự khác biệt đó quan trọng khi dnsResolve() cấp dữ liệu cho một quy tắc isInNet(). Cài đặt PAC của Chromium trả về null khi việc phân giải thất bại. Đừng xây nhánh lỗi dựa trên ký ức rằng kết quả luôn là chuỗi rỗng.
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";
}
Ví dụ này gửi các tên chưa phân giải tới proxy. Đó là một lựa chọn chính sách, không phải mặc định an toàn phổ quát. Nó có thể hữu ích khi proxy có bộ phân giải hoặc góc nhìn mạng mà máy khách không có. Một mạng yêu cầu phân giải cục bộ cần một kết quả rõ ràng khác.
Phân giải một lần và dùng lại kết quả. Điều đó giữ quyết định gắn với một giá trị duy nhất và tránh lặp lại những lời gọi trợ giúp có thể chậm.
Cũng hãy kiểm tra người dùng PAC thực tế. Các hàm trợ giúp IPv4 cũ và các hàm trợ giúp IPv6 mở rộng có hợp đồng khác nhau. Một quy tắc đã thử với cài đặt của một trình duyệt không chứng minh được hỗ trợ trong mọi ứng dụng dùng cùng URL PAC.
Nếu yêu cầu chỉ là định tuyến một hậu tố công ty đã biết, quy tắc theo tên máy chủ có thể tránh hoàn toàn việc truy vấn. Hãy dùng phân loại theo địa chỉ khi địa chỉ là thông tin mà chính sách thực sự cần.