Behoud ProxyFromEnvironment bij het aanpassen van Go's HTTP-transport
Behoud de proxyselectie uit de omgeving van Go wanneer u transporttime-outs of verbindingspools aanpast, in plaats van de standaard te vervangen door een Proxy-veld met nulwaarde.
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.