Maison  >  Article  >  développement back-end  >  Comment obtenir l'URL finale après les redirections à l'aide de http.NewRequest de Go ?

Comment obtenir l'URL finale après les redirections à l'aide de http.NewRequest de Go ?

DDD
DDDoriginal
2024-11-23 13:14:14529parcourir

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

Comment récupérer l'URL finale après les redirections dans http.NewRequest de Go

Lorsque vous effectuez des requêtes HTTP avec http.NewRequest, vous pouvez rencontrer des situations où le serveur redirige la demande. Pour extraire les chaînes de requête de l'URL finale, vous devez trouver l'URL à laquelle la requête a finalement abouti.

Malgré l'absence de champ explicite dans l'objet http.Response, il existe un moyen d'obtenir l'URL finale. URL :

Utiliser une fonction anonyme pour vérifier les redirections

Une fonction anonyme peut être utilisée pour capturez et enregistrez l’URL de redirection finale. Voici un exemple :

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)

La fonction CheckRedirect fournie au client encapsule le mécanisme de redirection de vérification par défaut. Il vérifie le nombre de redirections et enregistre la requête URL finale dans la variable lastUrlQuery. Une fois l'exécution de la requête terminée, vous pouvez accéder à l'URL finale via lastUrlQuery.

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!

Déclaration:
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