如何设置用于HTTP请求的IP?

时间:2015-05-30 23:44:23

标签: go

我不知道是否有可能因为std lib没有说明当前正在使用的地址:

http://golang.org/pkg/net/http/

resp, err := http.Get("http://example.com/")
if err != nil {
    // handle error
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)

我要做的是设置该http请求的源地址,为什么?因为我不想将我的主要IP地址用于那种东西......

1 个答案:

答案 0 :(得分:17)

您可以在客户端的传输中设置自定义拨号器。

// Create a transport like http.DefaultTransport, but with a specified localAddr
transport := &http.Transport{
    Proxy: http.ProxyFromEnvironment,
    DialContext: (&net.Dialer{
        Timeout:   30 * time.Second,
        KeepAlive: 30 * time.Second,
        LocalAddr: localAddr,
        DualStack: true,
    }).DialContext,
    MaxIdleConns:          100,
    IdleConnTimeout:       90 * time.Second,
    TLSHandshakeTimeout:   10 * time.Second,
    ExpectContinueTimeout: 1 * time.Second,
}

client := &http.Client{
    Transport: transport,
}