与此问题类似,您需要设置
http.Client.Transport字段。将其设置为的实例
net.Transport可以让您指定
net.Dialer要使用的对象。
net.Dialer然后允许您指定进行连接的本地地址。
例:
localAddr, err := net.ResolveIPAddr("ip", "<my local address>")if err != nil { panic(err)}// You also need to do this to make it work and not give you a // "mismatched local address type ip"// This will make the ResolveIPAddr a TCPAddr without needing to // say what SRC port number to use.localTCPAddr := net.TCPAddr{ IP: localAddr.IP,}webclient := &http.Client{ Transport: &http.Transport{ Proxy: http.ProxyFromEnvironment, DialContext: (&net.Dialer{ LocalAddr: &localTCPAddr, Timeout: 30 * time.Second, KeepAlive: 30 * time.Second, DualStack: true, }).DialContext, MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, TLSHandshakeTimeout: 10 * time.Second, ExpectContinueTimeout: 1 * time.Second, },}


