Go: x / net / proxy:非SOCKS ALL_PROXYはプロキシになります:不明なスキーム:http

作成日 2016年08月16日  ·  3コメント  ·  ソース: golang/go

ALL_PROXY環境変数が非SOCKSアドレスに設定されている場合、代わりに無視する必要があるときにproxy: unknown scheme: httpになります。

  1. どのバージョンのGoを使用していますか( go version )?
    docker経由でgo1.6.3
  2. どのオペレーティングシステムとプロセッサアーキテクチャを使用していますか( go env )?
    windows / amd64
  3. あなたは何をした?
    http ALL_PROXY環境変数を設定し、Docker Toolboxを実行してみます(例: docker run hello-world
  4. 何を見たいと思いましたか?
    Dockerは正常に動作するはずであり、GoはSOCKS以外のALL_PROXY環境変数を無視する必要があります
  5. 代わりに何を見ましたか?
    非SOCKS ALL_PROXY環境変数が無視されないため、Dockerは機能しません。 エラーはhttps://github.com/golang/net/blob/master/proxy/proxy.go#L93までさかのぼることができ

回避策:エラーが発生したときにunset ALL_PROXYを実行します。

最も参考になるコメント

これがまだ開いているなんて信じられない。

全てのコメント3件

100%確信はありませんが、 ALL_PROXYhttpまたはhttpsプロトコルに設定しても意味がありますか? プロキシを通過したい非HTTPのトラフィックが存在する可能性があります。

これがまだ開いているなんて信じられない。

@nathanleclaire自分でダイヤラタイプを登録する必要があると思います: https//godoc.org/golang.org/x/net/proxy#RegisterDialerType

こことここでもっと読む:
http://blog.ralch.com/articles/network-programming-and-proxies-in-golang/
https://gist.github.com/jim3ma/3750675f141669ac4702bc9deaf31c6b

しかし、TCPダイヤラのプロキシを設定しようとしているのかどうかもわかりません。 HTTPクライアントの変更は非常に簡単です。
http.DefaultTransport = &http.Transport{Proxy: http.ProxyURL(proxyURL)}

ただし、 net.Dialnet.DialTimeoutは、SOCKS5以外のプロキシスキームでは簡単ではありません。

このページは役に立ちましたか?
0 / 5 - 0 評価