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.

Artículos relacionados