Menguatkuasakan Penggunaan IPv4/IPv6 dalam Go HTTP Client
In Go, http.Client menyediakan pengangkutan untuk permintaan HTTP yang mengendalikan sambungan rangkaian . Untuk memaksa pelanggan menggunakan IPv4 atau IPv6 secara eksklusif, manfaatkan fungsi DialContext dalam pelaksanaan pengangkutan tersuai.
Coretan pengangkutan yang diubah suai bertujuan untuk mengesan domain IPv6 sahaja dengan mengembalikan ralat apabila percubaan dibuat untuk mewujudkan sambungan IPv4.
<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>
Untuk menggunakan pengangkutan tersuai, nyatakan objek http.Client:
<code class="go">myClient := http.Client{ Transport: &MyTransport{ Dialer: net.Dialer{ DualStack: false, // Disable IPv4/IPv6 dual-stack }, }, }</code>
Dengan menetapkan DualStack kepada palsu, Dialer tidak membenarkan sambungan IPv4. Pengubahsuaian ini berkesan memaksa pelanggan untuk menggunakan sambungan IPv6 sahaja.
Sambungan yang diwujudkan menggunakan pengangkutan yang diubah suai berkelakuan sebagai sambungan biasa. Menutupnya diuruskan oleh klien HTTP yang mendasari, jadi tidak perlu mengendalikannya secara manual.
Atas ialah kandungan terperinci Bagaimana untuk Menguatkuasakan Penggunaan IPv4 atau IPv6 dalam Klien HTTP Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!