Abfragen von URLs ohne Weiterleitungen in Go
In diesem Artikel befassen wir uns mit dem Problem der Abfrage einer URL, ohne automatische Weiterleitungen in Go auszulösen. Dies ist oft für Benchmarking-Zwecke erforderlich oder wenn Sie nur die Weiterleitungs-URL oder Fehler protokollieren müssen.
Lösung 1: Verwenden von http.DefaultTransport.RoundTrip
Erstellen Sie eine http .Objekt wie gewohnt anfordern. Anstatt es an einen http.Client zu übergeben, verwenden Sie http.DefaultTransport.RoundTrip(), um die Anfrage zu stellen. Dadurch wird die integrierte Umleitungsbehandlung des http.Client umgangen.
import "net/http" func QueryURLWithoutRedirect(url string) (*http.Response, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } return http.DefaultTransport.RoundTrip(req) }
Lösung 2: Weiterleitungen mit CheckRedirect deaktivieren
Erstellen Sie einen http.Client mit festgelegtem CheckRedirect-Feld zu Null. Dadurch wird der Client so konfiguriert, dass er Weiterleitungen nicht folgt.
import "net/http" func QueryURLWithoutRedirect(url string) (*http.Response, error) { client := &http.Client{ CheckRedirect: nil, } return client.Get(url) }
Weitere Überlegungen
Während beide Lösungen die gewünschte Funktionalität bieten, kann es beim ersten Ansatz unter hoher Last zu Leistungsproblemen kommen , da dadurch möglicherweise vorzeitig geschlossene Verbindungen wiederverwendet werden.
Um sicherzustellen, dass jede Abfrage beim zweiten Ansatz eine neue Verbindung öffnet, können Sie eine neue erstellen http.Client für jede Anfrage in einer Schleife. Dies ist jedoch möglicherweise nicht erforderlich, da Go inaktive Verbindungen nach einer bestimmten Zeit automatisch schließt.
Letztendlich hängt die Wahl des Ansatzes von Ihren spezifischen Leistungsanforderungen und dem gewünschten Verhalten in einem realen Szenario ab.
Das obige ist der detaillierte Inhalt vonWie kann ich URLs in Go abfragen, ohne Weiterleitungen zu folgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!