Rumah  >  Artikel  >  pembangunan bahagian belakang  >  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
Linda Hamiltonasal
2024-11-01 04:33:28308semak imbas

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>

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:
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