Maison >développement back-end >Golang >Comment appliquer l'utilisation d'IPv4/IPv6 dans le client net/http de Go ?

Comment appliquer l'utilisation d'IPv4/IPv6 dans le client net/http de Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-01 04:33:28418parcourir

How to Enforce IPv4/IPv6 Usage in Go's net/http Client?

Application de l'utilisation d'IPv4/IPv6 dans le client net/http de Go

Problème :

Utilisation du réseau Go 1.11/ client http, comment déterminer si un domaine est uniquement IPv6 et l'empêcher d'utiliser IPv4 si vous le souhaitez ?

Solution :

Pour imposer l'utilisation d'IPv4 ou d'IPv6 dans Client net/http de Go, modifiez sa fonction DialContext à l'aide de l'option Control de net.Dialer. Cette fonction vérifie le type de réseau utilisé pour les connexions sortantes.

Copiez le code suivant dans votre fonction principale :

<code class="go">func ModifiedTransport() {
    var MyTransport = &http.Transport{
        DialContext: (&net.Dialer{
            Timeout:   30 * time.Second,
            KeepAlive: 30 * time.Second,
            DualStack: false,
            Control: func(network, address string, c syscall.RawConn) error {
                if network == "ipv4" {
                    // Force cancellation of IPv4 connections
                    return errors.New("you should not use ipv4")
                }
                return nil
            },
        }).DialContext,
        MaxIdleConns:          100,
        IdleConnTimeout:       90 * time.Second,
        TLSHandshakeTimeout:   10 * time.Second,
        ExpectContinueTimeout: 1 * time.Second,
    }
    var myClient = http.Client{Transport: MyTransport}
    resp, myerr := myClient.Get("http://www.github.com")
    if myerr != nil {
        fmt.Println("request error")
        return
    }
    var buffer = make([]byte, 1000)
    resp.Body.Read(buffer)
    fmt.Println(string(buffer))
}</code>

Explication :

  • La fonction Contrôle est appelée avec le type de réseau de la connexion sortante (par exemple, "tcp4" ou "tcp6").
  • Si le type de réseau est "ipv4", la fonction Contrôle renvoie une erreur pour éviter l'établissement d'une connexion IPv4.
  • En utilisant cette approche, seules les connexions IPv6 seront autorisées, bloquant efficacement toute utilisation d'IPv4.

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