Le DefaultTransport standard de Go définit Proxy sur ProxyFromEnvironment. Un &http.Transport{} construit séparément possède une fonction Proxy nil, qui ne sélectionne aucun proxy.

Cette différence peut apparaître après l'ajout d'un transport uniquement pour modifier un délai. Tant que la valeur par défaut standard est installée, clonez-la et modifiez le champ nécessaire :

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

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

Le clone conserve la sélection de proxy issue de l'environnement et les autres réglages par défaut du transport. L'assertion de type suppose que l'application n'a pas remplacé DefaultTransport par un autre RoundTripper.

Pour un transport volontairement construit de zéro, définissez Proxy: http.ProxyFromEnvironment explicitement lorsque telle est sa politique de routage. Une fonction ProxyURL explicite exprime une autre politique : un intermédiaire choisi.

Configurez le transport avant que des requêtes concurrentes ne l'utilisent, puis réutilisez-le pour la charge de travail. Modifier un objet par défaut partagé peut affecter des clients sans rapport.

Les réglages TLS personnalisés sont distincts. Désactiver la vérification des certificats n'est pas nécessaire pour conserver la découverte de proxy, et cela modifierait la sécurité de chaque requête HTTPS correspondante.

Articles similaires