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

Comment puis-je empêcher les redirections avec le client HTTP Go ?

DDD
DDDoriginal
2024-12-21 06:44:13644parcourir

How Can I Prevent Redirects with the Go HTTP Client?

Ne pas suivre les redirections avec le client HTTP Go

Lors de l'interaction avec les API REST qui renvoient des réponses de redirection, modification du comportement du client HTTP Go ignorer les redirections peut être nécessaire pour des cas d’utilisation spécifiques. Voici un moyen simple et efficace d'obtenir cette fonctionnalité :

La fonction CheckRedirect de http.Client a priorité sur le comportement de suivi de redirection par défaut. En personnalisant cette fonction, vous pouvez déterminer quand les redirections doivent être suivies. Pour empêcher la redirection automatique, fournissez une implémentation alternative :

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

Cette configuration informe le package HTTP pour éviter les opérations de redirection. Il renvoie http.ErrUseLastResponse, qui demande au package d'utiliser la dernière réponse avec le corps toujours accessible.

Dans votre exemple, mettez à jour la configuration du client comme suit :

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

En définissant ceci configuration, votre script établira avec succès une connexion au point de terminaison, récupérera l'en-tête HTTP Location pour un traitement ultérieur et évitera d'être redirigé vers la nouvelle ressource. Cette méthode offre une approche plus élégante et sans erreur par rapport aux solutions alternatives qui forcent la gestion des erreurs.

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