HTTPS_PROXY 与 https_proxy

HTTPS_PROXY 与 https_proxy

据我所知,Linux 区分大小写。我通常像下面这样导出 http 代理:

export http_proxy= proxy:port export https_proxy= proxy:port

所以我认为如果我像下面这样写,它就会起作用。

export HTTP_PROXY= proxy:port export HTTPS_PROXY= proxy:port

但是,它也有效,我想知道原因以及为什么它有效。

我在这里找到了描述:http://curl.haxx.se/docs/manpage.html

环境变量可以以小写或大写形式指定。小写版本优先。http_proxy 是一个例外,因为它仅以小写形式提供。

这个惯例可以在任何地方适用吗?

參考文獻:

  1. http://pubs.opengroup.org/onlinepubs/7908799/xbd/envvar.html
  2. http://www.ee.surrey.ac.uk/Teaching/Unix/unix8.html
  3. http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_03_02.html
  4. http://sc.tamu.edu/help/general/unix/vars.html

答案1

实际上我无法得到确切的答案。
但经过我的调查,我认为唯一的原因是,
所有需要互联网连接的应用程序都会尝试找到两者
1。2 https_proxy
。 如果其中一个已设置,它将使用它来连接互联网HTTPS_PROXY

答案2

环境变量一般都是大写的,但http_proxy有时也有例外。例如,在 CGI 环境中,变量HTTP_PROXY可以被攻击者控制,如下所示golang/go#16405

  • CGI 规范定义传入请求标头“Foo:Bar”映射到环境变量HTTP_FOO == "Bar"。(参见 RFC 3875 4.1.18)

  • 环境HTTP_PROXY变量通常用于配置 HTTP 客户端的 HTTP 代理(并且默认情况下适用于 Go 的 net/http.Client 和 Transport)

所以它实际上取决于一个程序(当然他们可能在 rc 或配置文件中使用代理设置):

  • curl用途http_proxy, HTTPS_PROXY, NO_PROXY(参考
  • wget用途http_proxy, https_proxy, no_proxy(参考

您可以在两种情况下设置环境变量以确保无误,例如:

export http_proxy=http://proxy.my.com:8080
export https_proxy=http://proxy.my.com:8080
export no_proxy=.host1,.my.com,.local
# reuse values for another case
export HTTP_PROXY=${http_proxy}
export HTTPS_PROXY=${https_proxy}
export NO_PROXY=${no_proxy}

有一个类似的主题https://unix.stackexchange.com/questions/212894/whats-the-right-format-for-the-http-proxy-environment-variable-caps-or-no-ca

相关内容