Heim > Backend-Entwicklung > Golang > Wie kann ich URLs in Go abfragen, ohne Weiterleitungen zu folgen?

Wie kann ich URLs in Go abfragen, ohne Weiterleitungen zu folgen?

Linda Hamilton
Freigeben: 2024-12-06 02:16:13
Original
155 Leute haben es durchsucht

How Can I Query URLs in Go Without Following Redirects?

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)
}
Nach dem Login kopieren

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)
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage