Prečo curl ignoruje HTTP_PROXY
Zámerná výnimka curl pre HTTP_PROXY, premenné jednotlivých protokolov, ALL_PROXY a predvídateľný test proxy pomocou prostredia.
Pre ciele HTTP nastavte premennú http_proxy malými písmenami. curl zámerne ignoruje HTTP_PROXY veľkými písmenami. V shelli 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/Tieto priradenia platia iba pre príkaz, ktorý bezprostredne nasleduje. Nahraďte ukážkový počúvajúci koncový bod svojím proxy; na porovnanie verejných koncových bodov vyberte kandidáta zo zoznamu HTTP proxy. Premenná https_proxy vyberá trasu pre ciele HTTPS; hodnota s http:// stále znamená bežný HTTP proxy, ktorý dokáže vytvoriť tunel k cieľu. PowerShell a príkazové shelly Windows používajú inú syntax priradenia.
Prečo je práve tento zápis veľkými písmenami nebezpečný
Prostredia CGI môžu meniť hlavičky prichádzajúcich požiadaviek na premenné HTTP_ veľkými písmenami. Hlavička s názvom Proxy sa tak môže zmeniť na HTTP_PROXY. Dôvera v ňu ako konfiguráciu odchádzajúcich spojení by umožnila údajom požiadavky vyberať proxy. Požiadavka curl na malé písmená predchádza tomuto mapovaniu; výnimka neplatí rovnako pre HTTPS a premenné iných protokolov.
Ak zmena premennej nezmení trasu
Najprv hľadajte premennú konkrétneho protokolu, potom záložnú ALL_PROXY. Zodpovedajúce pravidlo NO_PROXY môže obísť proxy. Dôležité sú aj varianty malými písmenami a konkurenčné definície. Tento cyklus pre unixový shell hlási prítomnosť bez výpisu hodnôt, ktoré môžu obsahovať prihlasovacie údaje:
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
doneUvedené definície skontrolujte lokálne. Ak sa niektorá objaví znova, overte konfiguráciu spúšťacieho shellu, služby, IDE, kontajnera alebo CI. Prítomnosť odhaľuje možné vstupy, nie hodnotu, ktorá získala prednosť.
Ak chcete jednu požiadavku oddeliť od týchto volieb proxy, zadajte koncový bod aj prázdny zoznam výnimiek:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Na povolené porovnanie s priamym pripojením:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Tieto príkazy pomáhajú odlíšiť zdedenú trasu od zlyhania spojenia. Prejdite výsledky testu proxy po jednotlivých fázach pred zmenou ďalších nastavení prostredia. Pravidlá premenných curl vzťahujte na curl; vlastné behové prostredie aplikácie môže proxy zisťovať a zlučovať inak.