Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menguatkuasakan Penggunaan IPv4/IPv6 dalam Klien Go\'s net/http?

Bagaimana untuk Menguatkuasakan Penggunaan IPv4/IPv6 dalam Klien Go\'s net/http?

Linda Hamilton
Lepaskan: 2024-11-01 04:33:28
asal
540 orang telah melayarinya

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

Menguatkuasakan Penggunaan IPv4/IPv6 dalam Go's net/http Client

Isu:

Menggunakan Go 1.11's net/ Pelanggan http, bagaimanakah seseorang boleh menentukan sama ada domain adalah IPv6 sahaja dan menghalangnya daripada menggunakan IPv4 jika dikehendaki?

Penyelesaian:

Untuk menguatkuasakan penggunaan IPv4 atau IPv6 dalam Pelanggan net/http Go, ubah suai fungsi DialContext menggunakan pilihan Kawalan pada net.Dialer. Fungsi ini menyemak jenis rangkaian yang digunakan untuk sambungan keluar.

Salin kod berikut ke dalam fungsi utama anda:

<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>
Salin selepas log masuk

Penjelasan:

  • Fungsi Kawalan dipanggil dengan jenis rangkaian sambungan keluar (cth., "tcp4" atau "tcp6").
  • Jika jenis rangkaian ialah "ipv4," fungsi Kawalan mengembalikan ralat untuk mengelakkan penubuhan sambungan IPv4.
  • Dengan menggunakan pendekatan ini, hanya sambungan IPv6 akan dibenarkan, dengan berkesan menyekat sebarang penggunaan IPv4.

Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Penggunaan IPv4/IPv6 dalam Klien Go\'s net/http?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan