Apa format 'benar' untuk variabel lingkungan HTTP_PROXY? Topi atau tanpa topi?

25

Saya telah menemui keduanya http_proxydan HTTP_PROXY. Apakah keduanya setara? Apakah salah satu dari mereka lebih diutamakan daripada yang lain?

Mihai
sumber

Jawaban:

27

Tidak ada otoritas pusat yang memberikan makna resmi ke variabel lingkungan sebelum aplikasi dapat menggunakannya. POSIX mendefinisikan arti dari beberapa variabel ( PATH,, TERM...) dan mendaftar beberapa lagi dengan cara non-normatif sebagai yang umum digunakan, semuanya dalam huruf besar. http_proxydan teman bukan salah satu dari mereka.

Tidak seperti pada dasarnya semua variabel lingkungan konvensional yang digunakan oleh banyak aplikasi, http_proxy, https_proxy, ftp_proxydan no_proxybiasanya huruf kecil. Saya tidak ingat program apa pun yang hanya memahaminya dalam huruf besar, saya bahkan tidak dapat menemukan yang mencobanya dalam huruf besar. Banyak program menggunakan varian huruf kecil saja, termasuk lynx, wget, curl, perl LWP, perl WWW :: Search, python urllib / urllib2, dll. Jadi untuk variabel-variabel ini, bentuk yang tepat adalah huruf kecil.

Nama huruf kecil paling tidak berasal dari CERN libwww 2.15 pada Maret 1994 (terima kasih kepada Stéphane Chazelas karena menemukan ini). Saya tidak tahu apa yang memotivasi pilihan huruf kecil, yang akan menjadi tidak biasa saat itu.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
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-> Sebagai catatan, saya baru tahu bahwa buruh pelabuhan 17,04.0-ce hanya menghormati NO_PROXY.
jaume
skrip cloudformation (cfn-signal, cfn-init) menggunakan varian huruf besar HTTPS_PROXY. buruh pelabuhan juga menggunakan varian huruf besar.
Felipe Alvarez
huruf kecil tidak akan bekerja untuk saya, ketika mencoba menambahkan repositori ppa. sudo -E apt-add-repository ppa:xxxxx/xxxx. saya harus unset https_proxydanexport HTTPS_PROXY=http://a.b.c.d:xxxx
Mheni
7

Tidak ada standar dan versi huruf besar dan kecil digunakan tergantung pada aplikasi (juga lihat HTTPS_PROXY, ALL_PROXY, NO_PROXY).

Sebagai contoh:

ikal

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() mendukung varian huruf kecil dan besar.

Itu juga menyebutkan masalah keamanan:

Jika variabel lingkungan REQUEST_METHOD diatur, yang biasanya menunjukkan skrip Anda berjalan di lingkungan CGI, variabel lingkungan HTTP_PROXY (huruf besar _PROXY) akan diabaikan. Ini karena variabel itu dapat disuntikkan oleh klien menggunakan header HTTP "Proxy:". Jika Anda perlu menggunakan proxy HTTP di lingkungan CGI, gunakan ProxyHandler secara eksplisit, atau pastikan nama variabel dalam huruf kecil (atau setidaknya akhiran _proxy).


Beberapa aplikasi memungkinkan NO_PROXYuntuk mengandung bintang / rentang ip sementara yang lain tidak.


Begitu

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

Anda harus meliput.

laktak
sumber
0

Konvensi ini adalah untuk menggunakan semua variabel lingkungan capps saat mengekspornya, sehingga saat Anda menulis skrip shell Anda dapat menggunakan nama variabel huruf kecil tanpa khawatir tentang tabrakan nama dengan program lain. Tentu saja ini hanya konvensi, tidak ada batasan teknis untuk membatasi nama variabel lingkungan sehingga versi huruf kecil dapat digunakan dalam beberapa kasus, tetapi praktik terbaik adalah huruf besar, dan ingat bahwa mereka peka terhadap huruf besar-kecil sehingga mereka dapat memiliki perbedaan nilai-nilai.

Hildred
sumber
Tidak seperti kebanyakan (pada dasarnya, semua) variabel lingkungan konvensional, http_proxydan saudara kandungnya biasanya huruf kecil.
Gilles 'SANGAT berhenti menjadi jahat'
@Gilles itu akan menjadi bug.
Hildred
3
Tidak. Anda benar bahwa ada konvensi untuk menggunakan huruf besar untuk variabel lingkungan, tetapi itu hanya konvensi, bukan aturan absolut. Standar de facto untuk variabel lingkungan http_proxydan teman harus dieja dalam huruf kecil, yang melanggar konvensi. Aplikasi yang HTTP_PROXYakan digunakan adalah bug karena tidak kompatibel dengan bagian dunia lainnya.
Gilles 'SANGAT berhenti menjadi jahat'
1
snarf membutuhkan huruf besar dan ada laporan bug terhadap wget.
Hildred
1
Itu terbelakang. Ketika suatu perilaku telah ada selama 20 tahun, benar atau salah, begitulah adanya dan itu tidak akan diubah. Saya pikir pelopornya adalah lynx (lebih tua dari web); Saya tidak tahu mengapa menggunakan huruf kecil. Curl dimulai sebagai huruf besar kemudian berubah menjadi huruf kecil untuk kompatibilitas dengan lynx dan wget .
Gilles 'SO- berhenti bersikap jahat'
0

WGET - hanya menggunakan pengaturan proxy huruf kecil!

MeneerBij
sumber
-1

Keduanya http_proxydan HTTP_PROXYharus bekerja pada sistem berbasis RHEL dan ubuntu.

Karthik K
sumber