Mantenha ProxyFromEnvironment ao personalizar o transporte HTTP do Go
Preserve a seleção de proxy do ambiente do Go ao personalizar tempos limite ou pools de conexões do transporte, em vez de substituir o padrão por um campo Proxy vazio.
O DefaultTransport padrão do Go define Proxy como ProxyFromEnvironment. Um &http.Transport{} construído separadamente tem uma função Proxy nil, que não seleciona nenhum proxy.
Essa diferença pode aparecer depois de adicionar um transporte apenas para alterar um tempo limite. Com o padrão ainda instalado, clone-o e altere o campo necessário:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}O clone preserva a seleção de proxy do ambiente e as demais configurações padrão do transporte. A asserção de tipo pressupõe que a aplicação não substituiu DefaultTransport por outro RoundTripper.
Para um transporte construído intencionalmente do zero, defina Proxy: http.ProxyFromEnvironment explicitamente quando essa for sua política de roteamento. Uma função ProxyURL explícita expressa uma política diferente: um intermediário selecionado.
Configure o transporte antes que requisições concorrentes o usem e, depois, reutilize-o para a carga de trabalho. Alterar um objeto padrão compartilhado pode afetar clientes não relacionados.
As configurações de TLS personalizadas são separadas. Desativar a verificação de certificados não é necessário para manter a descoberta de proxy, e mudaria a segurança de cada requisição HTTPS correspondente.