Heim >Backend-Entwicklung >Golang >Wie deaktiviere ich automatische Weiterleitungen im Go HTTP-Client?
Automatische Weiterleitungen im Go-HTTP-Client deaktivieren
Der Go-HTTP-Client folgt automatisch HTTP-Weiterleitungen, wenn ein API-Endpunkt eine HTTP 302-Umleitung mit einem zurückgibt HTTP-Location-Header. Dieses Verhalten kann in bestimmten Szenarien unerwünscht sein, beispielsweise wenn Sie den HTTP-Location-Header für die spätere Verarbeitung erfassen müssen.
Ein gängiger Ansatz zum Deaktivieren automatischer Weiterleitungen besteht darin, die CheckRedirect-Funktion des Clients zu überschreiben. Allerdings kann sich diese Lösung wie ein Hack anfühlen, da sie HTTP-Weiterleitungen als Fehler behandelt, was sie nicht sind.
Eine elegantere Lösung besteht darin, http.Transport zu verwenden, um das Verhalten des Clients zu konfigurieren:
import ( "net/http" ) // Create a custom round-trip transport transport := &http.Transport{ DisableKeepAlives: true, } // Create an HTTP client with the custom transport client := &http.Client{ Transport: transport, }
In diesem Setup ist das Feld „DisableKeepAlives“ auf „true“ gesetzt, was verhindert, dass der Client dauerhafte Verbindungen aufrechterhält, sodass kein Abfangen erforderlich ist Weiterleitungen.
Alternativ können Sie den folgenden Code verwenden, um Weiterleitungen explizit zu deaktivieren:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
Mit diesem Code erkennt das HTTP-Paket automatisch, dass Weiterleitungen nicht befolgt werden sollen, wirft aber nicht eventuelle Fehler. Dadurch können Sie HTTP-Anfragen mit Standardauthentifizierung stellen und gleichzeitig automatische Weiterleitungen deaktivieren, ohne auf eine komplexe Fehlerbehandlung zurückgreifen zu müssen.
Das obige ist der detaillierte Inhalt vonWie deaktiviere ich automatische Weiterleitungen im Go HTTP-Client?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!