Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Mengatasi Alamat IP Sumber untuk Permintaan HTTP dalam Go?

Bagaimana untuk Mengatasi Alamat IP Sumber untuk Permintaan HTTP dalam Go?

DDD
DDDasal
2024-12-30 08:48:12837semak imbas

How to Override the Source IP Address for HTTP Requests in Go?

Mengatasi Alamat IP untuk Permintaan HTTP dalam Go

Dalam Go, pakej net/http memudahkan permintaan HTTP menggunakan alamat IP lalai sistem. Walau bagaimanapun, terdapat keadaan di mana anda mungkin memilih untuk menentukan alamat IP tersuai untuk permintaan tersebut. Artikel ini menunjukkan cara untuk mencapai ini menggunakan konfigurasi Dialer.

Cabaran berpunca daripada ketiadaan dokumentasi mengenai alamat semasa yang digunakan oleh perpustakaan http. Untuk menentukan alamat sumber untuk permintaan HTTP, kami mesti menyesuaikan Dialer dalam Pengangkutan Pelanggan.

Berikut ialah cara ia dilakukan:

// Establish a transport similar to http.DefaultTransport, but with a custom local address
transport := &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    DialContext: (&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        LocalAddr: localAddr, // Specify the desired local IP address
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   10 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

// Create an HTTP client using the custom transport
client := &http.Client{
    Transport: transport,
}

Dengan mengkonfigurasi Dialer dengan cara ini, Parameter LocalAddr menentukan alamat IP tersuai yang akan digunakan sebagai alamat sumber untuk semua permintaan HTTP yang dibuat oleh klien.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Alamat IP Sumber untuk Permintaan HTTP dalam Go?. 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