Wie erzwinge ich die IPv4- oder IPv6-Nutzung im Go-HTTP-Client?

Linda Hamilton
Freigeben: 2024-11-02 14:16:02
Original
437 Leute haben es durchsucht

How to Enforce IPv4 or IPv6 Usage in Go HTTP Client?

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.

ModifiedTransport Implementation

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>
Nach dem Login kopieren

HTTP-Client Konfiguration

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>
Nach dem Login kopieren

Nur ​​IPv6-Verbindungen erzwingen

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.

Schließen der Verbindung

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!