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