Standardní DefaultTransport v Go nastavuje Proxy na ProxyFromEnvironment. Samostatně vytvořený &http.Transport{} má funkci Proxy nil, která nevybírá žádnou proxy.

Tento rozdíl se může objevit poté, co přidáte transport jen kvůli změně časového limitu. Pokud je standardní výchozí hodnota stále nainstalovaná, naklonujte ji a změňte pole, které potřebujete:

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

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

Klon zachovává výběr proxy z prostředí i ostatní výchozí nastavení transportu. Typová aserce předpokládá, že aplikace nenahradila DefaultTransport jiným RoundTripperem.

U transportu záměrně vytvořeného od nuly nastavte Proxy: http.ProxyFromEnvironment výslovně, pokud je to jeho směrovací politika. Výslovná funkce ProxyURL vyjadřuje jinou politiku: jeden vybraný prostředník.

Transport nakonfigurujte dříve, než jej začnou používat souběžné požadavky, a poté jej znovu používejte pro danou zátěž. Změna sdíleného výchozího objektu může ovlivnit nesouvisející klienty.

Vlastní nastavení TLS je oddělené. Vypnutí ověřování certifikátů není nutné k zachování zjišťování proxy a změnilo by zabezpečení každého odpovídajícího požadavku HTTPS.

Související články