Maison > développement back-end > Golang > Comment obtenir l'URL finale après la redirection HTTP dans Go ?

Comment obtenir l'URL finale après la redirection HTTP dans Go ?

Linda Hamilton
Libérer: 2024-11-18 07:45:03
original
241 Les gens l'ont consulté

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

Récupération de l'URL finale après la redirection dans les requêtes HTTP

Lorsque vous utilisez http.NewRequest pour lancer des requêtes HTTP, vous pouvez rencontrer le besoin d'extraire chaînes de requête à partir de l'URL finale, même lorsque le client rencontre une redirection. Cependant, vous ne trouverez peut-être pas ces informations facilement disponibles dans l'objet Response.

Solution :

Une approche pour obtenir l'URL finale consiste à utiliser une fonction anonyme dans CheckRedirect. champ de la structure http.Client. Cette fonction anonyme sert de rappel exécuté avant chaque redirection pour capturer l'URL de la requête.

Voici un exemple :

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

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

    cl := http.Client{}
    var lastUrlQuery string

    // Custom CheckRedirect function to capture the final URL before each redirect
    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)
    }
    defer resp.Body.Close()

    // Use the lastUrlQuery variable to access the final URL after any redirects
    fmt.Printf("Last URL Query: %s\n", lastUrlQuery)

    // Read the response body for further processing
    io.Copy(io.Discard, resp.Body)
}
Copier après la connexion

Dans ce script, une fonction anonyme est affectée au CheckRedirect champ de http.Client. Cette fonction anonyme définit la variable lastUrlQuery sur l'URL de la requête avant chaque redirection. En conséquence, vous pouvez récupérer l'URL finale de la demande après les éventuelles redirections.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal