Maison > développement back-end > Golang > Comment puis-je interroger des URL dans Go sans suivre les redirections ?

Comment puis-je interroger des URL dans Go sans suivre les redirections ?

Linda Hamilton
Libérer: 2024-12-06 02:16:13
original
155 Les gens l'ont consulté

How Can I Query URLs in Go Without Following Redirects?

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)
}
Copier après la connexion

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)
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal