Wygląda na to, że wiele programów zaprojektowano tak, aby odczytywały te zmienne środowiskowe i decydowały, przez które proxy przejść, aby połączyć się z zasobem w Internecie. Programy te mogą mieć także własne, indywidualne ustawienia proxy, ale jeśli nie zostaną ustawione, chętnie wykorzystają te zmienne środowiskowe ...
- HTTP PROXY
- HTTPS_PROXY
- NO_PROXY
Chcę po prostu wiedzieć:
- Czy te zmienne środowiskowe są standardowe?
- Czy istnieje pisemna specyfikacja (może być przez producentów systemów operacyjnych?), Która zaleca stosowanie tych zmiennych środowiskowych?
environment-variables
http
http-proxy
Niko Bellic
źródło
źródło
Odpowiedzi:
Zgadzam się z oświadczeniem BillThor, że jest to bardziej konwencja niż norma.
Nie znam pochodzenia tych zmiennych, ale w przypadku HTTP na * nix wiele konwencji wydaje się wynikać z zachowania biblioteki HTTP libcurl i programu wiersza poleceń curl.
Na https://curl.haxx.se/docs/manual.html znajduje się opis zmiennych środowiskowych związanych z używaniem proxy HTTP, które libcurl / curl rozumie:
Zauważ, że
http_proxy
pisownia jest pisana małymi literami jako jedyna spośród tych zmiennych. Niektóre biblioteki / programy szukają małych liter tych zmiennych, podczas gdy inne szukają wielkich liter. Aby być bezpiecznym, należy zdefiniować zarówno małe, jak i wielkie wersje każdej zmiennej.Innym problemem jest to, że cytowany opis sposobu dopasowania nazw hostów
NO_PROXY
nie jest precyzyjny i nie odpowiada na następujące pytania:foo.example.com.
lub nie?foo.example.com
pasować tylko do tej jednej domeny, czy też powinien pasować do dowolnej subdomenybar.foo.example.com
? Jeśli ta ostatnia, to powinna również pasować do dowolnej subdomeny w dowolnej subdomenie, takiej jakbar.baz.foo.example.com
?.foo.example.com
(kropka na początku) jest dozwolona, a jeśli tak, to co powinna pasować?*
) jest dozwolona jako część wartości (*.example.com
,*example.com
), a jeśli tak, to w jaki sposób jest traktowana?Brak formalnej specyfikacji prowadzi do zamieszania i błędów. W tym miejscu należy wspomnieć o bibliotece libproxy, która ma na celu zapewnienie poprawnej i spójnej obsługi konfiguracji proxy. Ze strony głównej projektu :
Dalsza lektura:
źródło
To bardziej konwencja niż standard. Prawdopodobnie jest obsługiwany przez jedną lub więcej bibliotek obsługi protokołu, które faktycznie wykonują połączenia. Java używa podobnych właściwości w bibliotekach protokołów.
Zrozumienie i stosowanie wspólnych konwencji znacznie upraszcza programowanie. Pomaga także wdrożyć zasadę najmniejszego zaskoczenia i zwiększyć prawdopodobieństwo wystąpienia programów
just work
.źródło