Go net/http忽略系统代理设置

Go net/http忽略系统代理设置,go,Go,我正在使用调试HTTP请求,但Go的网络堆栈似乎忽略了系统代理设置(在OSX上),并且请求没有被记录 如何告诉Go请求应使用代理?您可以使用函数获取代理信息。然后,使用传输(由RoundTripper接口表示)创建http客户端,该传输包含有关代理设置的信息: var PTransport http.RoundTripper = &http.Transport{Proxy: http.ProxyFromEnvironment} client := http.Client{Transpo

我正在使用调试HTTP请求,但Go的网络堆栈似乎忽略了系统代理设置(在OSX上),并且请求没有被记录


如何告诉Go请求应使用代理?

您可以使用函数获取代理信息。然后,使用传输(由RoundTripper接口表示)创建http客户端,该传输包含有关代理设置的信息:

var PTransport http.RoundTripper = &http.Transport{Proxy: http.ProxyFromEnvironment}

client := http.Client{Transport: PTransport}

然后,您只需使用info transport gets from passed函数执行http请求,将其发送到
Proxy
struct字段。代理信息将取自
$HTTP\u Proxy
环境变量。

我刚刚遇到了这个问题,而接受的解决方案并没有为我解决这个问题。这是因为没有设置我的
$HTTP\u PROXY
环境变量

我可以通过按照此处所示设置环境变量来解决这个问题:一旦变量设置正确,我甚至不需要向我的客户机应用自定义的
传输。它与默认传输一起工作


可能是因为我使用的是自定义shell(zsh),所以这并不是自动发生的。然而有趣的是,python会正确地出现在同一个shell中的Charles代理中,而Go不会。更新my.zshrc(或您正在使用的任何shell或概要文件的配置)以导出适当的变量是有效的。

我所要做的就是导出链接中列出的变量,它就起作用了