Zašto curl zanemaruje HTTP_PROXY
Namjerna iznimka curl-a za HTTP_PROXY, varijable po protokolu, ALL_PROXY i predvidljivo testiranje proxyja putem okruženja.
Za HTTP odredišta postavite http_proxy malim slovima. curl namjerno zanemaruje HTTP_PROXY velikim slovima. U POSIX ljusci:
http_proxy=http://127.0.0.1:8080 curl http://example.com/
https_proxy=http://127.0.0.1:8080 curl https://example.com/Ove dodjele vrijede samo za naredbu koja slijedi odmah iza njih. Zamijenite primjer adrese slušatelja svojim proxyjem; za usporedbu javnih krajnjih točaka odaberite kandidata s popisa HTTP proxyja. Varijabla https_proxy bira rutu za HTTPS odredišta; vrijednost s http:// i dalje označava obični HTTP proxy koji može uspostaviti tunel do odredišta. PowerShell i Windows naredbene ljuske koriste drukčiju sintaksu dodjele.
Zašto je upravo taj zapis velikim slovima opasan
CGI okruženja mogu pretvoriti zaglavlja dolaznih zahtjeva u varijable HTTP_ velikim slovima. Zaglavlje nazvano Proxy zato može postati HTTP_PROXY. Povjerenje u tu varijablu kao postavku izlaznih veza omogućilo bi podacima zahtjeva da biraju proxy. Zahtjev curl-a za malim slovima izbjegava to preslikavanje; iznimka se ne primjenjuje jednako na HTTPS i varijable drugih protokola.
Ako promjena varijable ne promijeni rutu
Najprije potražite varijablu za određeni protokol, a zatim pričuvnu ALL_PROXY. Odgovarajuće pravilo NO_PROXY može zaobići proxy. Važne su i inačice malim slovima te konkurentske definicije. Ova petlja za Unix-sličnu ljusku prijavljuje prisutnost bez ispisa vrijednosti koje mogu sadržavati vjerodajnice:
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
doneLokalno pregledajte navedene definicije. Ako se neka ponovno pojavi, provjerite konfiguraciju pokretačke ljuske, servisa, IDE-a, spremnika ili CI-ja. Prisutnost označava moguće ulaze; ne govori koja je vrijednost prevladala.
Da biste jedan zahtjev izdvojili iz tih izbora proxyja, navedite i krajnju točku i prazan popis zaobilaženja:
curl --proxy http://127.0.0.1:8080 --noproxy '' --connect-timeout 5 --max-time 15 --verbose https://example.com/Za dopuštenu usporedbu s izravnom vezom:
curl --noproxy '*' --connect-timeout 5 --max-time 15 --verbose https://example.com/Ove naredbe pomažu razlikovati naslijeđenu rutu od pogreške povezivanja. Pročitajte rezultate testa proxyja po fazama prije mijenjanja dodatnih postavki okruženja. Pravila varijabli curl-a primjenjujte na curl; vlastito izvršno okruženje aplikacije može drukčije otkrivati i objedinjavati proxyje.