首頁 > 後端開發 > Golang > 如何將Go HTTP客戶端綁定到特定IP位址?

如何將Go HTTP客戶端綁定到特定IP位址?

Patricia Arquette
發布: 2024-10-29 12:24:29
原創
927 人瀏覽過

How Can I Bind a Go HTTP Client to a Specific IP Address?

Go 中將http.Client 綁定到IP 位址

在分散式運算領域,經常需要控制來源IP HTTP 請求的地址。對於客戶端電腦上有多個 NIC,這種粒度至關重要。

考慮以下基本 HTTP 用戶端程式碼:

<code class="go">package main

import "net/http"

func main() {
    webclient := &http.Client{}
    req, _ := http.NewRequest("GET", "http://www.google.com", nil)
    httpResponse, _ := webclient.Do(req)
    defer httpResponse.Body.Close()
}</code>
登入後複製

要將此客戶端綁定到特定 NIC 或 IP 位址,我們需要修改其Transport欄位。我們將使用使用自訂 net.Dialer 的自訂 net.Transport。反過來,net.Dialer 允許我們指定傳出連線的本機位址。

<code class="go">import (
    "net"
    "net/http"
)

func main() {
    localAddr, err := net.ResolveIPAddr("ip", "<my local address>")
    if err != nil {
        panic(err)
    }
    localTCPAddr := net.TCPAddr{
        IP: localAddr.IP,
    }

    webclient := &http.Client{
        Transport: &http.Transport{
            Proxy:                http.ProxyFromEnvironment,
            DialContext:          (&net.Dialer{LocalAddr: &localTCPAddr}).DialContext,
            MaxIdleConns:          100,
            IdleConnTimeout:       90 * time.Second,
            TLSHandshakeTimeout:   10 * time.Second,
            ExpectContinueTimeout: 1 * time.Second,
        },
    }
}</code>
登入後複製

透過此修改,我們的 HTTP 用戶端現在綁定到指定的 IP 位址,確保所有傳出請求均源自所需的 NIC。

以上是如何將Go HTTP客戶端綁定到特定IP位址?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板