Heim >Backend-Entwicklung >Golang >Wie erhalte ich die endgültige URL nach Weiterleitungen mithilfe von Gos http.NewRequest?

Wie erhalte ich die endgültige URL nach Weiterleitungen mithilfe von Gos http.NewRequest?

DDD
DDDOriginal
2024-11-23 13:14:14613Durchsuche

How to Get the Final URL After Redirects Using Go's http.NewRequest?

So rufen Sie die endgültige URL nach Weiterleitungen in Gos http.NewRequest ab

Beim Stellen von HTTP-Anfragen mit http.NewRequest kann es zu Situationen kommen wohin der Server die Anfrage umleitet. Um Abfragezeichenfolgen aus der endgültigen URL zu extrahieren, müssen Sie die URL finden, an der die Anfrage letztendlich gelandet ist.

Obwohl im http.Response-Objekt kein explizites Feld vorhanden ist, gibt es eine Möglichkeit, die endgültige URL zu erhalten URL:

Verwenden einer anonymen Funktion zum Überprüfen von Weiterleitungen

Eine anonyme Funktion kann zum Erfassen und Speichern der Weiterleitungen verwendet werden endgültige Weiterleitungs-URL. Hier ist ein Beispiel:

req, err := http.NewRequest("GET", URL, nil)
cl := http.Client{}

var lastUrlQuery string

cl.CheckRedirect = func(req *http.Request, via []*http.Request) error {
    if len(via) > 10 {
        return errors.New("too many redirects")
    }

    lastUrlQuery = req.URL.RequestURI()
    return nil
}

resp, err := cl.Do(req)
if err != nil {
    log.Fatal(err)
}

fmt.Printf("last url query is %v", lastUrlQuery)

Die dem Client bereitgestellte CheckRedirect-Funktion umschließt den standardmäßigen Prüfumleitungsmechanismus. Es überprüft die Anzahl der Weiterleitungen und speichert die endgültige URL-Abfrage in der Variablen lastUrlQuery. Sobald die Anforderungsausführung abgeschlossen ist, können Sie über lastUrlQuery auf die endgültige URL zugreifen.

Das obige ist der detaillierte Inhalt vonWie erhalte ich die endgültige URL nach Weiterleitungen mithilfe von Gos http.NewRequest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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