11.4 プロキシサーバーを突破する

HTTPプロキシや設定方法については、プロキシのある環境における開発環境の整備の章で説明しました。ここでは net/http においての仕様やハマりどころについて説明します。

11.4.1 net/httpのプロキシサーバー設定

Goの標準パッケージである net/http では transport.go に宣言されている ProxyFromEnvironment の内容でプロキシサーバーの設定が利用されます。

リスト11-11: net/http/proxy.go
func FromEnvironment() *Config {
    return &Config {
        HTTPProxy:  getEnvAny("HTTP_PROXY", "http_proxy"),
        HTTPSProxy: getEnvAny("HTTPS_PROXY", "https_proxy"),
        NoProxy:    getEnvAny("NO_PROXY", "no_proxy"),
        CGI:        os.Getenv("REQUEST_METHOD") != "",
    }
}

上記で呼び出されている getEnvAny ですが、関数名から推測できるように、環境変数からプロキシ情報を読み込むようになっています。項目としては、 HTTP_PROXYHTTPS_PROXYNO_PROXY が有効で、それらの小文字も有効です。どちらも設定されている場合は大文字側の値が利用されます。

net/http パッケージのHTTPクライアントを用いて外部アクセスする場合は、上記の環境変数にプロキシ情報を設定するのがもっとも簡単な方法です。

11.4.2 SSL証明書エラーがでる場合のプロキシサーバー対応 ...