De ce curl ignoră HTTP_PROXY
Excepția intenționată curl pentru HTTP_PROXY, variabilele specifice protocoalelor, ALL_PROXY și un test proxy previzibil bazat pe mediu.
Pentru destinații HTTP, setați http_proxy cu litere mici. curl ignoră intenționat HTTP_PROXY cu majuscule. Într-un 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/Aceste atribuiri se aplică doar comenzii imediat următoare. Înlocuiți adresa de ascultare din exemplu cu proxy-ul propriu; pentru compararea punctelor finale publice, alegeți un candidat din lista de proxy-uri HTTP. Variabila https_proxy selectează ruta pentru destinații HTTPS; o valoare cu http:// înseamnă în continuare un proxy HTTP obișnuit care poate crea un tunel către destinație. PowerShell și shell-urile de comandă Windows folosesc altă sintaxă de atribuire.
De ce tocmai această scriere cu majuscule este periculoasă
Mediile CGI pot transforma antetele cererilor primite în variabile HTTP_ cu majuscule. Astfel, un antet numit Proxy poate deveni HTTP_PROXY. Încrederea în el ca setare pentru conexiunile de ieșire ar permite datelor unei cereri să aleagă proxy-ul. Cerința curl de a folosi litere mici evită această corespondență; excepția nu se aplică identic pentru HTTPS și variabilele altor protocoale.
Dacă modificarea variabilei nu schimbă ruta
Căutați întâi o variabilă specifică protocolului, apoi alternativa ALL_PROXY. O regulă NO_PROXY corespunzătoare poate ocoli proxy-ul. Contează și variantele cu litere mici și definițiile concurente. Această buclă pentru un shell de tip Unix raportează prezența fără să afișeze valori ce pot conține date de autentificare:
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
doneExaminați local definițiile enumerate. Dacă una reapare, verificați configurația shell-ului de lansare, a serviciului, a IDE-ului, a containerului sau a CI. Prezența identifică intrări posibile; nu spune ce valoare a avut prioritate.
Pentru a izola o cerere de aceste alegeri de proxy, furnizați atât punctul final, cât și o listă de ocolire goală:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Pentru o comparație directă, când este permisă:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Aceste comenzi ajută la distingerea unei rute moștenite de o problemă de conectivitate. Citiți rezultatele testului proxy pe etape înainte să modificați alte setări de mediu. Aplicați regulile variabilelor curl la curl; mediul de execuție propriu al unei aplicații poate descoperi și combina proxy-uri diferit.