Abfragen von URLs ohne Umleitung in Go
Bei Benchmark-Tests für ein Weiterleitungsskript ist es notwendig, eine URL abzufragen, ohne eine automatische Weiterleitung zu initiieren . Dazu muss verhindert werden, dass das Programm den umgeleiteten Inhalt herunterlädt, während gleichzeitig die Umleitungs-URL oder damit verbundene Fehler protokolliert werden.
Lösung 1: Verwendung von http.DefaultTransport.RoundTrip
Ein Ansatz besteht darin, die Funktion http.DefaultTransport.RoundTrip() in Ihrer http.Request zu nutzen. Im Gegensatz zu http.Client folgt Transport nicht automatisch Weiterleitungen:
req, err := http.NewRequest("GET", "http://example.com/redirectToAppStore", nil) // ... resp, err := http.DefaultTransport.RoundTrip(req)
Bei dieser Lösung können jedoch in Hochlastszenarien Leistungsprobleme und Fehler auftreten.
Lösung 2: Einstellung CheckRedirect auf False
Alternativ können Sie das CheckRedirect-Feld des http.Client ändern, um die automatische Funktion zu deaktivieren Weiterleitungen:
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } // ... resp, err := client.Get("http://example.com/redirectToAppStore")
Diese Methode gewährleistet eine konsistente Leistung, garantiert jedoch nicht das Schließen von Verbindungen nach jeder Abfrage.
Gewährleistung des Verbindungsabschlusses
Um das Schließen der Verbindung zu erzwingen, können Sie für jede Anfrage einen neuen HTTP-Client erstellen:
for i := 0; i < n; i++ { client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } resp, err := client.Get("http://example.com/redirectToAppStore") // ... }
Dieser Ansatz stellt sicher, dass jede Abfrage eine neue Verbindung verwendet. Verhinderung von Leistungsproblemen aufgrund der Wiederverwendung von Verbindungen.
Das obige ist der detaillierte Inhalt vonWie frage ich URLs in Go ab, ohne Weiterleitungen zu folgen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!