Proxy Environment Variables for Julia Downloads
Provide libcurl-compatible proxy variables before launching Julia and diagnose the Downloads request rather than assuming every package uses the same backend.
Julia's Downloads standard library uses libcurl. Supply the proxy environment before starting the process that performs the download:
export http_proxy='http://proxy.example:8080'
export https_proxy='http://proxy.example:8080'
export no_proxy='localhost,127.0.0.1'
julia fetch.jl
An example fetch.jl can use the ordinary Downloads API:
using Downloads
Downloads.download(
"https://downloads.example/data.csv",
"data.csv";
timeout = 30,
)
The https_proxy variable selects the route for an HTTPS destination; the http:// value specifies an ordinary HTTP proxy. For downloads permitted to use public endpoints, the HTTP proxy list provides candidates for that value. Do not change that value to https:// unless the proxy listener itself supports TLS.
libcurl accepts http_proxy only in lowercase. Other protocol proxy variables also have uppercase forms. Its bypass convention is no_proxy or NO_PROXY, with comma-separated entries; http_no_proxy is not the documented general bypass variable.
A Julia process launched by an IDE or background service inherits that launcher's environment. A variable exported later in another terminal does not reconfigure it.
For diagnosis, Downloads.download accepts verbose=true, and its debug callback can receive detailed transport events. Review that output locally and remove secrets before sharing it.
A package using another HTTP implementation needs its own configuration review. A successful Downloads call establishes the behavior of that request, not every network operation written in Julia.