HTTP_PROXY ortam değişkeni için 'doğru' formatı nedir? Büyük harf veya büyük harf yok?


Yanıtlar:


27

Uygulamalar kullanmadan önce çevre değişkenlerine resmi bir anlam veren merkezi bir otorite yoktur. POSIX , bazı değişkenlerin ( PATH,, TERM…) anlamını tanımlar ve birkaçını, normal kullanımda olduğu gibi, hepsini büyük harf olarak, normal olmayan bir şekilde listeler. http_proxyve arkadaşlar onlardan biri değil.

Birçok uygulamalar tarafından kullanılan temelde tüm geleneksel ortam değişkenleri farklı olarak http_proxy, https_proxy, ftp_proxyve no_proxyyaygın küçük harf olur. Onları yalnızca büyük harflerle anlayan hiçbir programı hatırlamıyorum, büyük harfle çalışan bir program bile bulamıyorum. Birçok program, yalnızca lynx, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2, vb. Dahil olmak üzere küçük harf varyantını kullanır. Bu değişkenler için doğru form küçük harf olur.

Küçük harf ismi Mart 1994’te en az 2.15 libr CERN liberaline dayanır (bunun yerini belirleyen Stéphane Chazelas sayesinde). Küçük harf seçimini neyin motive ettiğini, ki o zamanlar sıradışı olanı bilmiyorum.


1
Unlike basically all conventional environment variables used by many applications, http_proxy, https_proxy, ftp_proxy and no_proxy are commonly lowercase. I don't recall any program that only understands them in uppercase-> Kayıt için, 17.04.0-ce docker'ın sadece NO_PROXY'i onurlandırdığını öğrendim.
Jaume

cloudformation komut dosyaları (cfn-signal, cfn-init) büyük harf türevini kullanır HTTPS_PROXY. liman işçisi ayrıca büyük harf türevini kullanır.
Felipe Alvarez,

Bir ppa deposu eklemeye çalışırken küçük harf benim için işe yaramaz. sudo -E apt-add-repository ppa:xxxxx/xxxx. zorundaydım unset https_proxyveexport HTTPS_PROXY=http://a.b.c.d:xxxx
Mheni

7

Standart yoktur ve uygulamaya bağlı olarak hem büyük hem küçük harf kullanılır (ayrıca bkz. HTTPS_PROXY, ALL_PROXY, NO_PROXY).

Örneğin:

bukle

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)). [..]

piton

urllib.request.getproxies() hem küçük hem de büyük harf çeşitlerini destekler.

Ayrıca bir güvenlik sorunundan da bahseder:

Eğer genellikle betiğinizin bir CGI ortamında çalıştığını gösteren REQUEST_METHOD ortam değişkeni ayarlanmışsa, HTTP_PROXY (büyük harf _PROXY) ortam değişkeni yoksayılır. Bunun nedeni, bu değişkenin “Proxy:” HTTP başlığı kullanılarak bir müşteri tarafından enjekte edilebilmesidir. Bir CGI ortamında bir HTTP proxy kullanmanız gerekirse, ProxyHandler'ı açıkça kullanın veya değişken adının küçük harfli olduğundan emin olun (veya en azından _proxy soneki).


Bazı uygulamalar NO_PROXYyıldızların / ip aralıklarının bulunmasına izin verirken, diğerleri değildir.


Yani

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

örtmelisin.


0

Kural, bunları dışa aktarırken tüm başlık çevre değişkenlerini kullanmaktır, böylece kabuk komut dosyaları yazarken, diğer programlarla isim çarpışmalarından endişe etmeden küçük harfli değişken adlarını kullanabilirsiniz. Elbette bu sadece bir kongredir, çevre değişkenlerinin isimlerini sınırlama konusunda teknik bir kısıtlama yoktur, bu nedenle küçük harf sürümü bazı durumlarda kullanılabilir, ancak en iyi uygulama büyük harf olur ve büyük küçük harf duyarlı olduklarını unutmayın. değerler.


Çoğu (temel olarak, hepsi) aksine geleneksel ortam değişkenleri http_proxyve kardeşleri genellikle küçük harflerdir.
Gilles 'SO- kötülük olmayı bırak'

Bir hata olurdu @Gilles.
hildred

3
Hayır değil. Çevre değişkenleri için büyük harf kullanmak için bir kural olduğunu haklısınız, ancak bu yalnızca bir kuraldır, mutlak bir kural değildir. Çevre değişkenleri http_proxyve arkadaşlar için fiili standart , bir sözleşmeye aykırı olarak küçük harflerle yazılmalıdır. Bir uygulamanın kullanımı HTTP_PROXYbir hata olacaktır çünkü dünyanın geri kalanıyla uyumsuz olacaktır.
Gilles 'SO- kötülük olmayı bırak'

1
snarf büyük harf gerektirir ve wget'a karşı bir hata raporu vardır.
hildred

1
Bu geriye. Bir davranış 20 yıl boyunca gerçekleştiğinde, doğru ya da yanlış, işte böyle ve değişmeyecek. Ben öncünün lynx olduğunu düşünüyorum (web'den daha eski); Neden küçük harf kullandığını bilmiyorum. Curl büyük harf olarak başladı, sonra lynx ve wget ile uyumluluk için küçük harf olarak değiştirildi .
Gilles 'SO- kötülük olmayı bırak'


-1

Hem http_proxyve HTTP_PROXYRHEL ve ubuntu tabanlı sistemlerde çalışması gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.