El DefaultTransport estàndard de Go estableix Proxy a ProxyFromEnvironment. Un &http.Transport{} construït a part té una funció Proxy nil, que no selecciona cap proxy.

Aquesta diferència pot aparèixer després d'afegir un transport només per canviar un temps d'espera. Amb el valor per defecte estàndard encara instal·lat, cloneu-lo i canvieu el camp que necessiteu:

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ó de proxy de l'entorn i la resta de paràmetres per defecte del transport. L'asserció de tipus assumeix que l'aplicació no ha substituït DefaultTransport per un altre RoundTripper.

Per a un transport construït intencionadament des de zero, establiu Proxy: http.ProxyFromEnvironment explícitament quan aquesta sigui la seva política d'encaminament. Una funció ProxyURL explícita expressa una política diferent: un intermediari seleccionat.

Configureu el transport abans que les peticions simultànies l'utilitzin i, després, reutilitzeu-lo per a la càrrega de treball. Canviar un objecte compartit per defecte pot afectar clients no relacionats.

Els paràmetres TLS personalitzats són a part. No cal desactivar la verificació de certificats per conservar el descobriment de proxy, i canviaria la seguretat de cada petició HTTPS coincident.

Articles relacionats