Heim >Backend-Entwicklung >Golang >Wie erhalte ich die endgültige URL nach HTTP-Weiterleitungen in Go?

Wie erhalte ich die endgültige URL nach HTTP-Weiterleitungen in Go?

Susan Sarandon
Susan SarandonOriginal
2024-11-25 19:14:11595Durchsuche

How to Get the Final URL After HTTP Redirects in Go?

Abrufen der endgültigen URL in Http.Go

Wie extrahieren Sie die endgültige URL nach einer Reihe von HTTP-Anfragen, einschließlich etwaiger Weiterleitungen? Der bereitgestellte Code verwendet http.NewRequest, um die Anfragen zu initiieren, aber das Response-Objekt enthält kein Feld für die endgültige URL.

Lösung:

Ein Ansatz ist um eine anonyme Funktion und http.Client.CheckRedirect zu nutzen. Durch die Definition einer benutzerdefinierten CheckRedirect-Funktion können Sie die letzte URL-Abfrage vor der Weiterleitung erfassen. Hier ist ein Beispiel:

import (
    "fmt"
    "io"
    "net/http"
)

func main() {
    req, err := http.NewRequest("GET", "https://example.com", nil)
    if err != nil {
        // Handle error
    }

    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 {
        // Handle error
    }
    io.Copy(io.Discard, resp.Body)
    fmt.Printf("Last URL query: %s\n", lastUrlQuery)
}

In diesem Code erfasst lastUrlQuery die URL-Abfrage vor jeder Weiterleitung. Wenn die Weiterleitungskette abgeschlossen ist oder ein Limit erreicht (im Beispiel auf 10 festgelegt), wird die endgültige URL-Abfrage in lastUrlQuery.

gespeichert

Das obige ist der detaillierte Inhalt vonWie erhalte ich die endgültige URL nach HTTP-Weiterleitungen in Go?. 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