Стандартният 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 заявка.

Подобни статии