Conserve ProxyFromEnvironment al personalizar el transporte HTTP de Go
Conserve la selección de proxy del entorno de Go cuando personaliza tiempos de espera o agrupaciones de conexiones, en lugar de sustituir el valor predeterminado por un campo Proxy vacío.
El DefaultTransport estándar de Go asigna Proxy a ProxyFromEnvironment. Un &http.Transport{} construido por separado tiene una función Proxy nil, que no selecciona ningún proxy.
Esa diferencia puede aparecer después de añadir un transporte solo para cambiar un tiempo de espera. Con el valor predeterminado estándar aún instalado, clónelo y cambie el campo que necesite:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}El clon conserva la selección de proxy del entorno y el resto de ajustes predeterminados del transporte. La aserción de tipo supone que la aplicación no ha sustituido DefaultTransport por otro RoundTripper.
Para un transporte construido deliberadamente desde cero, establezca Proxy: http.ProxyFromEnvironment explícitamente cuando esa sea su política de enrutamiento. Una función ProxyURL explícita expresa una política distinta: un intermediario seleccionado.
Configure el transporte antes de que las solicitudes concurrentes lo usen y, después, reutilícelo para la carga de trabajo. Cambiar un objeto compartido predeterminado puede afectar a clientes no relacionados.
Los ajustes TLS personalizados son independientes. No es necesario desactivar la verificación de certificados para conservar el descubrimiento de proxy, y cambiaría la seguridad de cada solicitud HTTPS coincidente.