HTTP_PROXY環境変数の「正しい」形式は何ですか?ふたがあるかどうか?

HTTP_PROXY環境変数の「正しい」形式は何ですか?ふたがあるかどうか?

http_proxy私は両方の状況に遭遇しましたHTTP_PROXY。両方の形式は同じですか?一方が他方よりも優先されますか?

答え1

アプリケーションで環境変数を使用する前に正式な意味を割り当てる中央機関はありません。POSIXPATHいくつかの変数(、、、...)の意味が定義されておりTERM、他の一般的に使用されているいくつかの変数は非標準の方法ですべて大文字でリストされています。http_proxyそして友達はそれらの一つではありません。

デフォルトでは、多くのアプリケーションで使用されているすべての一般的な環境変数とは異なり、http_proxyおよびhttps_proxyは通常小文字です。大文字だけ認識するプログラムは覚えておらず、大文字だけ認識するプログラムも見たことがありません。多くのプログラムは、lynx、wget、curl、perl LWP、perl WWW :: Search、python urllib / urllib2などを含む小文字の変数のみを使用します。したがって、これらの変数の場合、正しい形式は小文字です。ftp_proxyno_proxy

小文字の名前は少なくともCERN libwww 2.151994年3月(これを見つけたStéphane Chazelasに感謝します)。当時も異例だった小文字を選ぶことになったきっかけが何なのかわかりません。

答え2

標準はなく、アプリケーションによっては大文字と小文字のバージョンが使用されます(HTTPS_PROXY、ALL_PROXY、NO_PROXYを参照)。

たとえば、

カール

ENVIRONMENT VARIABLES

  Curl reads and understands the following environment variables:

        http_proxy, HTTPS_PROXY, FTP_PROXY

  They should be set for protocol-specific proxies. General proxy should be
  set with

        ALL_PROXY

  A comma-separated list of host names that shouldn't go through any proxy is
  set in (only an asterisk, '*' matches all hosts)

        NO_PROXY

http.proxy
   Override the HTTP proxy, normally configured using the http_proxy, https_proxy, 
   and all_proxy environment variables (see curl(1)). [..]

Python

urllib.request.getproxies()小文字と大文字のバリエーションがサポートされています。

また、セキュリティの問題も言及しています。

環境変数REQUEST_METHODが設定されている場合(通常はスクリプトがCGI環境で実行されていることを示す)、環境変数HTTP_PROXY(大文字_PROXY)は無視されます。これは、クライアントが "Proxy:" HTTP ヘッダーを使用してこの変数を注入できるためです。 CGI環境でHTTPプロキシを使用する必要がある場合は、ProxyHandlerを明示的に使用するか、変数名が小文字か(または少なくとも_proxyサフィックスがあるかどうか)を確認してください。


一部のアプリケーションではNO_PROXYアスタリスク/ IP範囲を含めることができますが、他のアプリケーションではそうではありません。


だから

export https_proxy=$http_proxy HTTP_PROXY=$http_proxy HTTPS_PROXY=$http_proxy NO_PROXY=$no_proxy

あなたの要件を満たす必要があります。

答え3

ほとんどのアプリケーションは大文字変数をサポートし、他のアプリケーションは小文字変数をサポートしているようです。curlCGI-BINまたはPHPタイプの環境でHTTPヘッダを介して設定できるため、HTTP_PROXYのサポートを削除することで混乱が発生すると思います。Proxy:カールのソースコード:

https://github.com/curl/curl/blob/30e7641d7d2eb46c0b67c0c495a0ea7e52333ee2/lib/url.c#L2250-L2266

GitLabのブログ投稿は狂気を説明しています。

https://about.gitlab.com/blog/2021/01/27/we-need-to-talk-no-proxy/

答え4

WGET- 小文字のプロキシ設定のみを使用してください!

関連情報