Interrogation d'URL sans redirection dans Go
Lors du test des scripts de redirection, il peut être nécessaire d'interroger une URL sans déclencher la redirection. Ceci est particulièrement utile pour enregistrer les URL de redirection ou les erreurs. Il existe deux approches pour y parvenir dans Go.
Utilisation du transport par défaut
La première méthode consiste à utiliser l'objet http.DefaultTransport, qui permet un meilleur contrôle sur le processus de traitement des demandes. En utilisant la fonction RoundTrip, il est possible d'exécuter la requête HTTP sans suivre aucune redirection.
req, err := http.NewRequest("GET", "http://example.com/redirectToAppStore", nil) // ... resp, err := http.DefaultTransport.RoundTrip(req)
Utilisation du champ CheckRedirect
Alternativement, la deuxième méthode exploite le champ CheckRedirect d'un http.Client. En définissant ce champ sur func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, cela désactive effectivement le traitement de redirection pour les requêtes ultérieures exécutées via le client.
client := &http.Client{ CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } resp, err := client.Get("http://example.com/redirectToAppStore")
Considérations sur les performances
Dans le contexte du benchmarking, il est important de noter que la première solution (http.DefaultTransport.RoundTrip) présente des problèmes de performances lors de l'exécution de nombreuses requêtes en parallèle. Cela est dû au potentiel de réutilisation des connexions au sein du transport.
Pour les scénarios où des demandes individuelles nécessitent des connexions distinctes, il est recommandé d'utiliser la deuxième solution (champ CheckRedirect) et de créer un nouveau client pour chaque demande. Cela garantit que les connexions sont fermées après chaque requête et non réutilisées.
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!