Désactivation des redirections automatiques dans le client HTTP Go
Le client HTTP Go suit automatiquement les redirections HTTP lorsqu'un point de terminaison d'API renvoie une redirection HTTP 302 avec un En-tête d'emplacement HTTP. Ce comportement peut être indésirable dans certains scénarios, par exemple lorsque vous devez capturer l'en-tête HTTP Location pour un traitement ultérieur.
Une approche courante pour désactiver les redirections automatiques consiste à remplacer la fonction CheckRedirect du client. Cependant, cette solution peut ressembler à un hack car elle traite les redirections HTTP comme des erreurs, ce qui n'est pas le cas.
Une solution plus élégante consiste à utiliser http.Transport pour configurer le comportement du client :
import ( "net/http" ) // Create a custom round-trip transport transport := &http.Transport{ DisableKeepAlives: true, } // Create an HTTP client with the custom transport client := &http.Client{ Transport: transport, }
Dans cette configuration, le champ DisableKeepAlives est défini sur true, ce qui empêche le client de conserver des connexions persistantes, évitant ainsi d'avoir besoin d'intercepter redirections.
Vous pouvez également utiliser le code suivant pour désactiver explicitement les redirections :
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, }
Avec ce code, le package HTTP reconnaît automatiquement que les redirections ne doivent pas être suivies, mais ne lance pas toute erreur. Cela vous permet d'effectuer des requêtes HTTP avec l'authentification de base tout en désactivant les redirections automatiques sans recourir à une gestion complexe 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!