Mantenete ProxyFromEnvironment quando personalizzate il transport HTTP di Go
Conservate la selezione del proxy dall'ambiente di Go quando personalizzate timeout o pool di connessioni del transport, invece di sostituire il valore predefinito con un campo Proxy vuoto.
Il DefaultTransport standard di Go imposta Proxy su ProxyFromEnvironment. Un &http.Transport{} costruito separatamente ha una funzione Proxy nil, che non seleziona alcun proxy.
Questa differenza può comparire dopo aver aggiunto un transport solo per cambiare un timeout. Con il valore predefinito standard ancora installato, clonatelo e modificate il campo necessario:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Il clone conserva la selezione del proxy dall'ambiente e le altre impostazioni predefinite del transport. L'asserzione di tipo presuppone che l'applicazione non abbia sostituito DefaultTransport con un altro RoundTripper.
Per un transport costruito intenzionalmente da zero, impostate Proxy: http.ProxyFromEnvironment esplicitamente quando è la sua politica di instradamento. Una funzione ProxyURL esplicita esprime una politica diversa: un intermediario selezionato.
Configurate il transport prima che le richieste concorrenti lo usino, poi riutilizzatelo per il carico di lavoro. Modificare un oggetto predefinito condiviso può influire su client non correlati.
Le impostazioni TLS personalizzate sono separate. Disattivare la verifica dei certificati non è necessario per conservare l'individuazione del proxy e cambierebbe la sicurezza di ogni richiesta HTTPS corrispondente.