Зберігайте 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-запиту.