Неудачный запрос не доказывает, что назначение находится вне вашей частной сети. Он доказывает лишь то, что это вычисление 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.

Если требование — лишь направлять известный корпоративный суффикс, правило по имени хоста может полностью избежать запроса. Классификацию по адресу применяйте тогда, когда адрес действительно нужен политике.

Похожие статьи