Application de l'utilisation d'IPv4/IPv6 dans le client HTTP Go
Dans Go, le http.Client fournit un transport pour les requêtes HTTP qui gère les connexions réseau . Pour forcer le client à utiliser exclusivement IPv4 ou IPv6, exploitez la fonction DialContext dans une implémentation de transport personnalisée.
L'extrait de transport modifié vise à détecter les domaines IPv6 uniquement en renvoyant une erreur. lorsqu'une tentative est effectuée pour établir une connexion IPv4.
<code class="go">type MyTransport struct { http.Transport Dialer net.Dialer } func (t *MyTransport) DialContext(ctx context.Context, network, address string) (net.Conn, error) { if network == "ipv4" { return nil, errors.New("IPv4 not permitted") } return t.Dialer.DialContext(ctx, network, address) }</code>
Pour utiliser le transport personnalisé, instanciez un objet http.Client :
<code class="go">myClient := http.Client{ Transport: &MyTransport{ Dialer: net.Dialer{ DualStack: false, // Disable IPv4/IPv6 dual-stack }, }, }</code>
En définissant DualStack sur false, le numéroteur interdit les connexions IPv4. Cette modification oblige effectivement le client à utiliser des connexions IPv6 uniquement.
Les connexions établies à l'aide du transport modifié se comportent comme des connexions normales. Leur fermeture est gérée par le client HTTP sous-jacent, il n'est donc pas nécessaire de le gérer manuellement.
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!