Maison >développement back-end >Golang >Comment puis-je empêcher le client HTTP de Go de suivre automatiquement les redirections ?

Comment puis-je empêcher le client HTTP de Go de suivre automatiquement les redirections ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-04 01:53:39823parcourir

How Can I Prevent Go's HTTP Client from Automatically Following Redirects?

Exploiter le client HTTP Go pour désactiver les redirections automatiques

Dans la programmation Go, la gestion des redirections HTTP est essentielle lors de la création de clients API RESTful. Cependant, il existe des scénarios dans lesquels la gestion automatique des redirections n'est pas souhaitable. Cette question explore une approche alternative pour empêcher le client HTTP Go de suivre automatiquement les redirections.

La solution initiale fournie dans la question met en évidence une implémentation personnalisée de la fonction CheckRedirect, obligeant les redirections HTTP à être traitées comme des erreurs. Bien que techniquement efficace, il ne semble pas naturel de classer les redirections comme des échecs.

Pour résoudre ce problème, la réponse présente une solution plus élégante : modifier la fonction CheckRedirect pour renvoyer http.ErrUseLastResponse. Cela signale au package HTTP qu'il ne faut pas suivre les redirections, sans déclencher de gestion d'erreurs.

Voici le code mis à jour :

client := &http.Client{
    CheckRedirect: func(req *http.Request, via []*http.Request) error {
        return http.ErrUseLastResponse
    },
}

Avec cette modification, le client HTTP ignorera les redirections et renvoie la réponse la plus récente avec son corps toujours accessible. Le commentaire dans le code source clarifie :

Comme cas particulier, si CheckRedirect renvoie ErrUseLastResponse, alors la réponse la plus récente est renvoyée avec son corps non fermé, avec une erreur nulle.

En tant que Par conséquent, vous pouvez gérer les redirections manuellement dans votre script, offrant ainsi une plus grande flexibilité et un plus grand contrôle sur le flux de travail HTTP. En tirant parti de cette technique, vous pouvez interagir avec les API REST qui renvoient des redirections tout en conservant le niveau de personnalisation souhaité.

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