Правило PAC для коротких имён может обходить ваш прокси
Поймите, почему имя хоста без точки и его полная форма могут выбирать разные маршруты в одном и том же скрипте PAC.
Скрипт PAC получает имя хоста из URL. dashboard не превращается автоматически в dashboard.example.internal перед сопоставлением:
function FindProxyForURL(url, host) {
if (isPlainHostName(host)) {
return "DIRECT";
}
return "PROXY 203.0.113.10:8080";
}
Используйте реальную конечную точку HTTP вместо адреса из документации; список HTTP-прокси даёт кандидатов для тестов публичных назначений там, где этот маршрут разрешён. В этом скрипте короткое имя намеренно возвращает DIRECT; полное имя попадает в ветку прокси. «Обычное имя хоста» означает написание без точки, а не вывод о том, что хост находится в доверенной локальной сети.
Если нужная политика — один внутренний домен, сопоставляйте этот домен, а не каждое короткое имя. У dnsDomainIs и shExpMatch разные входные данные и семантика шаблонов. Проверка суффикса для .example.internal не включает точный корень example.internal; включайте этот случай явно, когда это задумано. Шаблон в стиле оболочки — не IP-подсеть и не регулярное выражение.
Сравните результат скрипта для короткого имени, полного имени, несвязанного публичного хоста и любого предполагаемого корня домена. Это проверяет выбор правила без подключения к прокси. Проверьте первое правило, возвращающее результат, когда широкая ветвь DIRECT не даёт попробовать иначе доступную конечную точку.
Используйте сравнение имён, когда оно выражает политику; DNS-помощники добавляют собственные запросы и задержку. Держите неявный локальный обход браузера отдельно от скрипта. Проверка localhost не заменяет реальное написание публичного или внутреннего назначения.