我不知道是否有可能,因为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地址用于此类工作…
您可以在客户端传输中设置自定义拨号程序。
// 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, }