Go's standaard DefaultTransport zet Proxy op ProxyFromEnvironment. Een apart gebouwde &http.Transport{} heeft een nil Proxy-functie, die geen proxy selecteert.

Dat verschil kan optreden nadat een transport is toegevoegd om alleen een time-out te wijzigen. Als de standaard nog is geïnstalleerd, kloon deze en wijzig het veld dat u nodig hebt:

transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second

client := &http.Client{
    Transport: transport,
    Timeout: 30 * time.Second,
}

De kloon behoudt de proxyselectie uit de omgeving en de overige standaardinstellingen van het transport. De type-assertie gaat ervan uit dat de toepassing DefaultTransport niet heeft vervangen door een andere RoundTripper.

Voor een transport dat bewust vanaf nul is gebouwd, stelt u Proxy: http.ProxyFromEnvironment expliciet in wanneer dat het routeringsbeleid is. Een expliciete ProxyURL-functie drukt een ander beleid uit: één gekozen tussenpersoon.

Configureer het transport voordat gelijktijdige verzoeken het gebruiken en hergebruik het daarna voor de werkbelasting. Het wijzigen van een gedeeld standaardobject kan niet-gerelateerde clients beïnvloeden.

Aangepaste TLS-instellingen staan apart. Certificaatverificatie uitschakelen is niet nodig om proxyontdekking te behouden, en het zou de beveiliging van elk overeenkomstig HTTPS-verzoek veranderen.

Gerelateerde artikelen