Kvifor curl ignorerer HTTP_PROXY
Forstå det medvitne HTTP_PROXY-unntaket i curl, protokollspesifikke variablar, ALL_PROXY og ein føreseieleg proxytest med miljøvariablar.
For HTTP-mål set du http_proxy med små bokstavar. curl ignorerer medvite HTTP_PROXY med store bokstavar. I eit POSIX-skal:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Desse tilordningane gjeld berre kommandoen rett etter dei. Byt ut lyttepunktet i dømet med din proxy; for å samanlikne offentlege endepunkt kan du velje ein kandidat frå lista over HTTP-proxyar. Variabelen https_proxy vel ei rute til HTTPS-mål; ein verdi med http:// tyder framleis ein vanleg HTTP-proxy som kan opprette ein tunnel til målet. PowerShell og Windows-kommandoskal nyttar ein annan tilordningssyntaks.
Kvifor nett denne skrivemåten med store bokstavar er farleg
CGI-miljø kan gjere hovudfelt i innkomande førespurnader om til HTTP_-variablar med store bokstavar. Eit hovudfelt med namnet Proxy kan difor bli HTTP_PROXY. Å stole på det som oppsett for utgåande samband ville late førespurnadsdata velje proxy. Kravet i curl om små bokstavar unngår denne koplinga; unntaket gjeld ikkje på nøyaktig same måte for HTTPS og andre protokollvariablar.
Dersom ein endra variabel ikkje endrar ruta
Sjå fyrst etter ein protokollspesifikk variabel, deretter reservevalet ALL_PROXY. Ein passande NO_PROXY-regel kan gå utanom proxyen. Variantar med små bokstavar og konkurrerande definisjonar spelar òg inn. Denne lykkja for eit Unix-liknande skal viser om dei finst, utan å skrive ut verdiar som kan innehalde påloggingsopplysningar:
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
doneUndersøk dei oppførte definisjonane lokalt. Dersom ein dukkar opp att, sjekk oppsettet for startskalet, tenesta, IDE-en, containeren eller CI. At ein variabel finst, viser moglege inndata; det fortel ikkje kva verdi som fekk førerang.
For å isolere éin førespurnad frå desse proxyvala oppgjev du både endepunktet og ei tom liste over unntak:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/For ei tillaten direkte samanlikning:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Desse kommandoane hjelper med å skilje ei arva rute frå ein tilkoplingsfeil. Les resultata frå proxytesten steg for steg før du endrar fleire miljøinnstillingar. Bruk variabelreglane i curl på curl; køyringsmiljøet til ein applikasjon kan finne og kombinere proxyar annleis.