Похоже, что многие программы предназначены для чтения этих переменных среды, чтобы решить, через какой прокси-сервер пройти, чтобы подключиться к ресурсу в Интернете. Эти программы могут также иметь свои собственные индивидуальные настройки прокси, но если они не установлены, они с радостью будут использовать эти переменные среды ...
- HTTP_PROXY
- https_proxy
- no_proxy
Я просто хочу знать:
- Являются ли эти переменные среды стандартными?
- Существует ли письменная спецификация (может быть от производителей ОС?), Которая рекомендует использовать эти переменные среды?
environment-variables
http
http-proxy
Нико Беллик
источник
источник
Ответы:
Я согласен с утверждением BillThor, что это скорее соглашение, чем стандарт.
Я не знаю происхождение этих переменных, но в случае HTTP на * nix многие соглашения возникают из-за поведения библиотеки libcurl HTTP и программы командной строки curl.
На https://curl.haxx.se/docs/manual.html есть описание переменных среды, связанных с использованием HTTP-прокси, которые понимает libcurl / curl:
Обратите внимание, что
http_proxy
пишется строчными буквами как единственная из этих переменных. Некоторые библиотеки / программы ищут имена этих переменных в нижнем регистре, тогда как другие ищут имена в верхнем регистре. Чтобы быть в безопасности, следует определять как строчные, так и прописные версии каждой переменной.Другая проблема заключается в том, что приведенное описание сопоставления имен хостов не
NO_PROXY
является точным и не отвечает на следующие вопросы:foo.example.com.
или нет?foo.example.com
совпадать только с этим одним доменом или с любым подобным поддоменомbar.foo.example.com
? Если последнее, то оно также должно соответствовать любому субдомену в любом подобластиbar.baz.foo.example.com
?.foo.example.com
Разрешено ли (точка в начале) и если да, то что должно совпадать?*
Допускается ли звездочка ( ) как часть значения (*.example.com
,*example.com
), и если да, то как это обрабатывается?Отсутствие формальной спецификации приводит к путанице и ошибкам. Здесь следует упомянуть библиотеку libproxy, которая призвана обеспечить правильную и согласованную поддержку конфигурации прокси. С домашней страницы проекта :
Дальнейшее чтение:
источник
Это скорее соглашение, чем стандарт. Скорее всего, это поддерживается одной или несколькими библиотеками обработчиков протоколов, которые фактически устанавливают соединения. Java использует аналогичные свойства в своих библиотеках протоколов.
Понимание и использование общих соглашений делает разработку намного проще. Это также помогает реализовать принцип наименьшего удивления и повышает вероятность программ
just work
.источник