Сохраняйте ProxyFromEnvironment при настройке HTTP-транспорта Go
Сохраняйте выбор прокси из окружения Go при настройке тайм-аутов транспорта или пулов соединений, вместо того чтобы заменять значение по умолчанию полем Proxy с нулевым значением.
Стандартный DefaultTransport в Go задаёт Proxy равным ProxyFromEnvironment. Отдельно созданный &http.Transport{} имеет nil-функцию Proxy, поэтому не выбирает прокси.
Эта разница может проявиться после добавления транспорта только для изменения тайм-аута. Пока стандартное значение по умолчанию установлено, клонируйте его и измените нужное поле:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Клон сохраняет выбор прокси из окружения и остальные настройки транспорта по умолчанию. Проверка типа предполагает, что приложение не заменило DefaultTransport другим RoundTripper.
Для транспорта, намеренно созданного с нуля, задайте Proxy: http.ProxyFromEnvironment явно, если это его политика маршрутизации. Явная функция ProxyURL выражает другую политику: один выбранный посредник.
Настройте транспорт до того, как параллельные запросы начнут его использовать, а затем переиспользуйте его для нагрузки. Изменение общего объекта по умолчанию может затронуть несвязанных клиентов.
Пользовательские настройки TLS отдельны. Отключать проверку сертификатов не требуется для сохранения обнаружения прокси, и это изменило бы безопасность каждого соответствующего HTTPS-запроса.