Interroger des URL sans redirection dans Go
Dans cet article, nous abordons la problématique de l'interrogation d'une URL sans déclencher de redirections automatiques dans Go. Ceci est souvent nécessaire à des fins d'analyse comparative ou lorsque vous avez uniquement besoin de consigner l'URL de redirection ou les erreurs.
Solution 1 : Utiliser http.DefaultTransport.RoundTrip
Créer un http. .Demandez l'objet comme d'habitude. Au lieu de le transmettre à un http.Client, utilisez http.DefaultTransport.RoundTrip() pour effectuer la demande. Cela contourne la gestion des redirections intégrée du http.Client.
import "net/http" func QueryURLWithoutRedirect(url string) (*http.Response, error) { req, err := http.NewRequest("GET", url, nil) if err != nil { return nil, err } return http.DefaultTransport.RoundTrip(req) }
Solution 2 : Désactivez les redirections avec CheckRedirect
Créez un http.Client avec le champ CheckRedirect défini à zéro. Cela configure le client pour qu'il ne suive pas les redirections.
import "net/http" func QueryURLWithoutRedirect(url string) (*http.Response, error) { client := &http.Client{ CheckRedirect: nil, } return client.Get(url) }
Autres considérations
Bien que les deux solutions fournissent la fonctionnalité souhaitée, la première approche peut rencontrer des problèmes de performances sous une charge élevée. , car il peut réutiliser des connexions fermées prématurément.
Pour vous assurer que chaque requête ouvre une nouvelle connexion avec la deuxième approche, vous pouvez créer une nouvelle http.Client pour chaque requête en boucle. Cependant, cela peut ne pas être nécessaire, car Go ferme automatiquement les connexions inactives après une certaine période.
En fin de compte, le choix de l'approche dépend de vos exigences de performances spécifiques et du comportement que vous désirez dans un scénario du monde réel.
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!