Mengapa curl Mengabaikan HTTP_PROXY
Fahami pengecualian HTTP_PROXY yang disengajakan oleh curl, pemboleh ubah mengikut protokol, ALL_PROXY dan ujian proksi melalui persekitaran yang boleh dijangka.
Untuk destinasi HTTP, tetapkan http_proxy dalam huruf kecil. curl sengaja mengabaikan HTTP_PROXY dalam huruf besar. Dalam shell POSIX:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Penetapan ini hanya terpakai kepada arahan yang menyusul sejurus selepasnya. Gantikan alamat pendengar dalam contoh dengan proksi anda; untuk membandingkan titik akhir awam, pilih calon daripada senarai proksi HTTP. Pemboleh ubah https_proxy memilih laluan untuk destinasi HTTPS; nilai dengan http:// masih bermaksud proksi HTTP biasa yang boleh membentuk terowong ke destinasi. PowerShell dan shell arahan Windows menggunakan sintaks penetapan yang berlainan.
Mengapa ejaan huruf besar ini berbahaya
Persekitaran CGI boleh menukar pengepala permintaan masuk kepada pemboleh ubah HTTP_ dalam huruf besar. Oleh itu, pengepala bernama Proxy boleh menjadi HTTP_PROXY. Mempercayainya sebagai konfigurasi sambungan keluar akan membolehkan data permintaan memilih proksi. Keperluan huruf kecil curl mengelakkan pemetaan ini; pengecualian tersebut tidak terpakai secara serupa kepada HTTPS dan pemboleh ubah protokol lain.
Jika perubahan pemboleh ubah tidak mengubah laluan
Cari pemboleh ubah khusus protokol dahulu, kemudian pilihan sandaran ALL_PROXY. Peraturan NO_PROXY yang sepadan boleh memintas proksi. Varian huruf kecil dan takrif yang bersaing juga penting. Gelung shell seakan Unix ini melaporkan kewujudan tanpa mencetak nilai yang mungkin mengandungi bukti kelayakan:
for name in http_proxy HTTP_PROXY https_proxy HTTPS_PROXY all_proxy ALL_PROXY no_proxy NO_PROXY; do
if printenv "$name" >/dev/null; then
printf '%s is set\n' "$name"
fi
donePeriksa takrif yang disenaraikan secara setempat. Jika sesuatu takrif muncul semula, semak konfigurasi shell pelancar, perkhidmatan, IDE, bekas atau CI. Kewujudan mengenal pasti input yang mungkin; ia tidak menunjukkan nilai yang mendapat keutamaan.
Untuk mengasingkan satu permintaan daripada pilihan proksi tersebut, berikan titik akhir dan senarai pintasan kosong:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Untuk perbandingan terus yang dibenarkan:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Arahan ini membantu membezakan laluan yang diwarisi daripada kegagalan sambungan. Baca hasil ujian proksi peringkat demi peringkat sebelum mengubah lebih banyak tetapan persekitaran. Gunakan peraturan pemboleh ubah curl untuk curl; persekitaran masa jalan aplikasi sendiri boleh mengesan dan menggabungkan proksi dengan cara lain.