web-dev-qa-db-ja.com

HTTP_PROXY環境変数の「正しい」形式は何ですか?キャップかキャップなし?

両方に遭遇しましたhttp_proxyおよびHTTP_PROXY。両方のフォームは同等ですか?それらの1つが他よりも優先されますか?

28
Mihai

アプリケーションが環境変数を使用する前に、環境変数に公式の意味を割り当てる中心的な権限はありません。 [〜#〜] posix [〜#〜] はいくつかの変数(PATHTERM、…)の意味を定義し、さらにいくつかを非規範的にリストします一般的に使用されているように、すべて大文字で表記します。 http_proxyと友達はその1つではありません。

基本的に、多くのアプリケーションで使用されるすべての従来の環境変数とは異なり、http_proxyhttps_proxyftp_proxyおよびno_proxyは通常小文字です。大文字でしか理解できないプログラムを思い出したことはありません。大文字で試してみるプログラムすら見つかりません。 lynx、wget、curl、Perl LWP、Perl WWW :: Search、python urllib/urllib2など)を含む多くのプログラムは小文字のバリアントのみを使用します。これらの変数の場合、正しい形式は小文字の1つ。

小文字の名前は、1994年3月に少なくとも CERN libwww 2.15 まで遡ります(これを見つけてくれたStéphaneChazelasに感謝します)。小文字の選択の動機が何だったのかはわかりません。

標準はなく、アプリケーションに応じて大文字と小文字の両方のバージョンが使用されます(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
_

git

_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
_

あなたがカバーする必要があります.

10
laktak

[〜#〜] wget [〜#〜]-小文字のプロキシ設定のみを使用しています!

0
MeneerBij

規約では、エクスポート時にすべてのcapps環境変数を使用するため、シェルスクリプトを作成するときに、他のプログラムとの名前の衝突を心配することなく小文字の変数名を使用できます。もちろん、これは慣例にすぎません。小文字のバージョンを使用できるように環境変数の名前を制限することに技術的な制限はありませんが、ベストプラクティスは大文字です。値。

0
hildred