environment-variables – ¿Son estándar las variables de entorno HTTP_PROXY, HTTPS_PROXY y NO_PROXY?

Pregunta:

Parece que muchos programas están diseñados para leer estas variables de entorno para decidir qué proxy utilizar para conectarse a un recurso en Internet. Esos programas también pueden tener su propia configuración de proxy individual, pero si no están configuradas, felizmente usarán estas variables de entorno …

  • HTTP_PROXY
  • HTTPS_PROXY
  • NO_PROXY

Sólo quiero saber:

  • ¿Son estas variables de entorno estándar?
  • ¿Existe una especificación escrita (¿puede ser de los fabricantes del sistema operativo?) Que recomiende el uso de estas variables de entorno?

Respuesta:

Estoy de acuerdo con la declaración de BillThor de que esto es más una convención que un estándar.
No sé el origen de estas variables, pero en el caso de HTTP en * nix, muchas convenciones parecen originarse en el comportamiento de la biblioteca HTTP libcurl y el programa de línea de comandos curl.

En https://curl.haxx.se/docs/manual.html hay una descripción de las variables de entorno relacionadas con el uso del proxy HTTP que libcurl / curl entiende:

VARIABLES DE ENTORNO

Curl lee y comprende las siguientes variables de entorno:
http_proxy, HTTPS_PROXY, FTP_PROXY

Deben configurarse para proxies específicos de protocolo. El proxy general debe configurarse con
ALL_PROXY

Se establece una lista separada por comas de nombres de host que no deberían pasar por ningún proxy (solo un asterisco, '*' coincide con todos los hosts)
NO_PROXY

Si el nombre de host coincide con una de estas cadenas, o si el host está dentro del dominio de una de estas cadenas, las transacciones con ese nodo no se realizarán mediante proxy.

Tenga en cuenta que http_proxy se escribe en minúsculas como la única entre estas variables. Algunas bibliotecas / programas buscan nombres en minúsculas de estas variables, mientras que otros buscan nombres en mayúsculas. Para estar seguro, uno debe definir versiones en minúsculas y mayúsculas de cada variable.

Otro problema es que la descripción citada de cómo se NO_PROXY nombres de host con NO_PROXY no es precisa y no responde a las siguientes preguntas:

  • Los valores deben ser nombres de dominio completos (FQDN) que terminan con un punto como foo.example.com. ¿O no?
  • ¿ foo.example.com debe coincidir solo con este dominio o también debe coincidir con cualquier subdominio como bar.foo.example.com ? Si es lo último, ¿debería coincidir también con cualquier subdominio en cualquier subdominio como bar.baz.foo.example.com ?
  • ¿Está .foo.example.com (el punto al principio) y, de ser así, con qué debería coincidir?
  • ¿ * permite el asterisco ( * ) como parte del valor ( *.example.com , *example.com ) y, de ser así, cómo se trata?

La falta de especificaciones formales genera confusión y errores. Aquí hay que mencionar la biblioteca libproxy que tiene como objetivo proporcionar un soporte correcto y consistente para la configuración del proxy. Desde la página de inicio del proyecto:

libproxy existe para responder a la pregunta: Dado un recurso de red, ¿cómo puedo acceder a él? Maneja todos los detalles, lo que le permite volver a la programación.

Otras lecturas:

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım