Erzwingen der IPv4/IPv6-Nutzung im Go-HTTP-Client
In Go stellt der http.Client einen Transport für HTTP-Anfragen bereit, der Netzwerkverbindungen verarbeitet . Um den Client zu zwingen, ausschließlich IPv4 oder IPv6 zu verwenden, nutzen Sie die DialContext-Funktion innerhalb einer benutzerdefinierten Transportimplementierung.
Das modifizierte Transport-Snippet zielt darauf ab, reine IPv6-Domänen zu erkennen, indem es einen Fehler zurückgibt wenn versucht wird, eine IPv4-Verbindung aufzubauen.
<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>
Um den benutzerdefinierten Transport zu verwenden, instanziieren Sie ein http.Client-Objekt:
<code class="go">myClient := http.Client{ Transport: &MyTransport{ Dialer: net.Dialer{ DualStack: false, // Disable IPv4/IPv6 dual-stack }, }, }</code>
Indem Sie DualStack auf „false“ setzen, lässt der Dialer IPv4 nicht zu Verbindungen. Diese Änderung zwingt den Client effektiv dazu, reine IPv6-Verbindungen zu verwenden.
Die mithilfe des geänderten Transports hergestellten Verbindungen verhalten sich wie reguläre Verbindungen. Das Schließen wird vom zugrunde liegenden HTTP-Client verwaltet, sodass keine manuelle Bearbeitung erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie erzwinge ich die IPv4- oder IPv6-Nutzung im Go-HTTP-Client?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!