ProxyFromEnvironment beim Anpassen von Gos HTTP-Transport beibehalten
Behalten Sie die Proxy-Auswahl aus der Umgebung von Go bei, wenn Sie Transport-Timeouts oder Verbindungspools anpassen, statt den Standard durch ein Proxy-Feld mit Nullwert zu ersetzen.
Gos Standard-DefaultTransport setzt Proxy auf ProxyFromEnvironment. Ein separat erzeugter &http.Transport{} hat eine nil-Proxy-Funktion und wählt damit keinen Proxy aus.
Dieser Unterschied kann auftreten, nachdem ein Transport nur hinzugefügt wurde, um ein Timeout zu ändern. Wenn der Standard noch installiert ist, klonen Sie ihn und ändern Sie das benötigte Feld:
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.ResponseHeaderTimeout = 15 * time.Second
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}Der Klon bewahrt die Proxy-Auswahl aus der Umgebung und die übrigen Standardeinstellungen des Transports. Die Typzusicherung setzt voraus, dass die Anwendung DefaultTransport nicht durch einen anderen RoundTripper ersetzt hat.
Für einen bewusst von Grund auf neu gebauten Transport setzen Sie Proxy: http.ProxyFromEnvironment ausdrücklich, wenn dies seine Routing-Richtlinie ist. Eine ausdrückliche ProxyURL-Funktion drückt eine andere Richtlinie aus: ein ausgewählter Vermittler.
Konfigurieren Sie den Transport, bevor parallele Anforderungen ihn nutzen, und verwenden Sie ihn danach für die Arbeitslast wieder. Das Ändern eines gemeinsam genutzten Standardobjekts kann unabhängige Clients beeinflussen.
Benutzerdefinierte TLS-Einstellungen sind getrennt. Das Deaktivieren der Zertifikatsprüfung ist nicht erforderlich, um die Proxy-Erkennung zu behalten, und es würde die Sicherheit jeder passenden HTTPS-Anfrage verändern.