HTTP_PROXY,HTTPS_PROXY,NO_PROXY,ALL_PROXY来自什么协议?

我们在使用 curl 的时候,假如需要用到代理,则我们常常会这么写:

curl --socks5 xxx.xxx.xxx.xxx:xxxx http://example.com/
或者
curl -x "http_proxy://xxx.xxx.xxx.xxx:xxxx" http://example.com/

参考:Curl使用socks5 or http代理命令

假如使用频繁嫌麻烦,我们可以在环境变量中设置代理,比如:

export HTTP_PROXY=xxx.xxx.xxx.xxx:xxxx
export HTTPS_PROXY=xxx.xxx.xxx.xxx:xxxx
export NO_PROXY=xxx.xxx.xxx.xxx,qq.com,baidu.com

然后只需简单的 curl http://example.com 即可默认走代理了。类似curl的有很多,大家好像不约而同的都认识 HTTP_PROXY,HTTPS_PROXY,NO_PROXY,ALL_PROXY这些环境变量,这个时候我就纳闷了,这些环境变量究竟出自什么协议使得大家都认识,为什么以前我都不知道?带着这样的问题,我去查了资料,看下面这个链接:
Are HTTP_PROXY, HTTPS_PROXY and NO_PROXY environment variables standard?,里面说得很清楚,原来是:

This is more a convention than a standard. “这更像是一种惯例而非标准。”

下面稍微解释一下这4个惯例的意思:

HTTP_PROXY: 不用解释了,看名字就明白了
HTTPS_PROXY: 不用解释了,看名字就明白了
ALL_PROXY: 假如上面2个是同一个,那么可以用这一个来定义就够了,但是惯例更多的是用上面2个
NO_PROXY: 可以是IP,可以是域名,多个以逗号分隔,比如:xxx.xxx.xxx.xxx,baidu.com,凡是这个列表中的都不进行代理

发表评论

邮箱地址不会被公开。 必填项已用*标注