net/http
パッケージのhttp.Client
を利用する際にプロキシを経由するように設定する方法を解説します。
目次
環境変数に設定する方法
net/http
パッケージのhttp.Client
は、環境変数HTTP_PROXY
が設定されている場合、その値をプロキシとして利用します。
例)
export HTTP_PROXY="http://user:pass@proxy.example.com:9999"
Golang側で動的に環境変数をセットする場合は下記の通りです。
os.Setenv("HTTP_PROXY", "http://user:pass@proxy.example.com:9999")
http.Client
の初期化時に設定する方法
環境変数経由でなく、http.Client
のインスタンスに設定する事も可能です。
例)
proxyUrl, err := url.Parse("http://user:pass@proxy.example.com:9999")
if err == nil {
client = &http.Client{
Transport: &http.Transport{
Proxy: http.ProxyURL(proxyUrl),
},
}
}
net/http
パッケージ自体に適用する方法
この方法を利用すると、そのプロジェクト全体でnet/http
のhttp.Client
を用いた通信処理が全てプロキシ経由となります。
proxyUrl, err := url.Parse("http://user:pass@proxy.example.com:9999")
http.DefaultTransport = &http.Transport{
Proxy: http.ProxyURL(proxyUrl)
}