Miért hagyja figyelmen kívül a curl a HTTP_PROXY változót?
A curl szándékos HTTP_PROXY-kivétele, a protokollspecifikus változók, az ALL_PROXY és a környezeti változókkal végzett kiszámítható proxyteszt.
HTTP-célpontokhoz a kisbetűs http_proxy változót állítsa be. A curl szándékosan figyelmen kívül hagyja a nagybetűs HTTP_PROXY változót. POSIX-parancsértelmezőben:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Ezek az értékadások csak a közvetlenül utánuk álló parancsra vonatkoznak. Cserélje le a példában szereplő figyelő végpontot a saját proxyjára; nyilvános végpontok összehasonlításához válasszon jelöltet a HTTP-proxyk listájáról. A https_proxy változó a HTTPS-célpontok útvonalát választja ki; a http:// kezdetű érték továbbra is közönséges HTTP-proxyt jelent, amely alagutat tud létrehozni a célpontig. A PowerShell és a Windows parancsértelmezői eltérő értékadási szintaxist használnak.
Miért éppen ez a nagybetűs alak veszélyes?
A CGI-környezetek a bejövő kérések fejléceit nagybetűs HTTP_ változókká alakíthatják. Így egy Proxy nevű fejlécből HTTP_PROXY lehet. Ha ezt megbízható kimenő kapcsolati beállításként kezelnék, a kérés adatai választhatnák ki a proxyt. A curl kisbetűs alakra vonatkozó követelménye elkerüli ezt a leképezést; a kivétel nem ugyanígy érvényes a HTTPS és más protokollok változóira.
Ha a változó módosítása nem változtatja meg az útvonalat
Először a protokollspecifikus változót keresse, utána a tartalék ALL_PROXY változót. Egy illeszkedő NO_PROXY szabály megkerülheti a proxyt. A kisbetűs változatok és az egymással versengő definíciók is számítanak. Ez a Unix-szerű parancsértelmezőhöz készült ciklus csak a jelenlétet jelzi, a hitelesítési adatokat is tartalmazó értékeket nem írja ki:
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
doneVizsgálja meg helyben a felsorolt definíciókat. Ha valamelyik újra megjelenik, ellenőrizze az indító parancsértelmező, a szolgáltatás, az IDE, a konténer vagy a CI beállításait. A jelenlét lehetséges bemeneteket azonosít; nem árulja el, melyik érték jutott érvényre.
Egy kérés elkülönítéséhez ezektől a proxyválasztásoktól adja meg a végpontot és egy üres megkerülési listát is:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Engedélyezett közvetlen összehasonlításhoz:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Ezek a parancsok segítenek megkülönböztetni az örökölt útvonalat a kapcsolódási hibától. Értelmezze a proxyteszt eredményeit szakaszonként, mielőtt további környezeti beállításokat módosít. A curl változószabályait a curlre alkalmazza; az alkalmazás saját futtatókörnyezete másképp fedezheti fel és egyesítheti a proxykat.