Proč curl ignoruje HTTP_PROXY
Záměrná výjimka curl pro HTTP_PROXY, proměnné jednotlivých protokolů, ALL_PROXY a předvídatelné testování proxy pomocí prostředí.
Pro cíle HTTP nastavte proměnnou http_proxy malými písmeny. curl záměrně ignoruje HTTP_PROXY velkými písmeny. V shellu 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/Tato přiřazení platí pouze pro příkaz, který bezprostředně následuje. Nahraďte ukázkový naslouchající endpoint svou proxy; pro srovnání veřejných endpointů vyberte kandidáta ze seznamu HTTP proxy. Proměnná https_proxy vybírá trasu pro cíle HTTPS; hodnota s http:// stále znamená běžnou HTTP proxy schopnou vytvořit tunel k cíli. PowerShell a příkazové shelly Windows používají jinou syntaxi přiřazení.
Proč je právě tento zápis velkými písmeny nebezpečný
Prostředí CGI mohou převádět hlavičky příchozích požadavků na proměnné HTTP_ velkými písmeny. Hlavička nazvaná Proxy se tak může změnit na HTTP_PROXY. Důvěřovat jí jako konfiguraci odchozích spojení by umožnilo datům požadavku vybrat proxy. Požadavek curl na malá písmena tomuto mapování předchází; výjimka neplatí totožně pro HTTPS a proměnné jiných protokolů.
Když změna proměnné nezmění trasu
Nejprve hledejte proměnnou konkrétního protokolu, potom záložní ALL_PROXY. Odpovídající pravidlo NO_PROXY může proxy obejít. Důležité jsou i varianty malými písmeny a soupeřící definice. Tato smyčka pro unixový shell hlásí přítomnost bez výpisu hodnot, které mohou obsahovat přihlašovací ú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é definice prověřte místně. Objevuje-li se některá znovu, zkontrolujte konfiguraci spouštěcího shellu, služby, IDE, kontejneru nebo CI. Přítomnost odhaluje možné vstupy, nikoli hodnotu, která získala přednost.
Chcete-li jeden požadavek oddělit od těchto voleb proxy, zadejte endpoint i prázdný seznam výjimek:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Pro povolené srovnání s přímým připojením:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Tyto příkazy pomáhají odlišit zděděnou trasu od selhání spojení. Projděte výsledky testu proxy po jednotlivých fázích, než začnete měnit další nastavení prostředí. Pravidla proměnných curl vztahujte na curl; vlastní běhové prostředí aplikace může proxy zjišťovat a slučovat jinak.