HTTP_PROXY, HTTPS_PROXY ve NO_PROXY ortam değişkenleri standart mıdır?


25

İnternetteki bir kaynağa bağlanmak için hangi proxy'nin geçeceğine karar vermek için bu ortam değişkenlerini okumak için birçok program tasarlanmış gibi görünüyor. Bu programların kendi ayrı ayrı proxy ayarları da olabilir, ancak bunlar ayarlanmadıysa, bu ortam değişkenlerini mutlu bir şekilde kullanırlar ...

  • http_proxy
  • https_proxy
  • VEKALET YOK

Sadece bilmek istiyorum:

  • Bu ortam değişkenleri standart mı?
  • Bu ortam değişkenlerinin kullanılmasını öneren yazılı bir şartname var mı (işletim sistemi üreticileri tarafından olabilir mi?)?

1
Ben no_proxy bilmiyorum, ama http_proxy (küçük harfle yazılmış) standart
Uwe Burger

@UweBurger belki hangi programları kullandığını belirtebilirsiniz .. Ve bu da soru soran için de geçerli. Ben wget üzerinde kullanılan gördüm
barlop

Yanıtlar:


18

BillThor'un bu bir standarttan çok bir sözleşme olduğunu ifade ediyorum .
Bu değişkenlerin kökenini bilmiyorum ama HTTP üzerinde * nix durumunda birçok kurallar libcurl HTTP kütüphanesi ve curl komut satırı programının davranışından kaynaklanıyor gibi görünüyor .

At https://curl.haxx.se/docs/manual.html libcurl / bukle anlayan HTTP proxy kullanarak ilgili çevre değişkenleri açıklaması var:

ORTAM DEĞİŞKENLERİ

Curl aşağıdaki ortam değişkenlerini okur ve anlar:
http_proxy, HTTPS_PROXY, FTP_PROXY

Protokole özgü proxy'ler için ayarlanmalıdırlar. Genel vekil sunucu
ALL_PROXY

Hiçbir proxy'den geçmemesi gereken virgülle ayrılmış bir ana bilgisayar adları listesi ayarlanır (yalnızca yıldız işareti, '*' tüm ana bilgisayarlarla eşleşir)
NO_PROXY

Ana bilgisayar adı bu dizelerden biriyle eşleşiyorsa veya ana makine bu dizelerden birinin etki alanı içindeyse, bu düğümle yapılan işlemler proxy'ye geçirilmez.

http_proxyBu değişkenler arasında tek harf olarak yazıldığını lütfen unutmayın . Bazı kütüphaneler / programlar bu değişkenlerin küçük harfli isimlerini, diğerleri ise küçük harfli isimleri arar. Güvende olmak için her değişkenin hem küçük hem de büyük harfli sürümlerini tanımlamanız gerekir.

Başka bir sorun, ana bilgisayar adlarının nasıl eşleştirildiğine ilişkin belirtilen açıklamanın NO_PROXYkesin olmaması ve aşağıdaki soruları yanıtlamamasıdır:

  • Değerler tam olarak nitelenmiş alan adları (FQDN) olmalı mı, bu yüzden bir nokta gibi foo.example.com.mi yoksa bitmeyecek mi?
  • Should foo.example.comsadece bu alanı ile eşleşmesi veya o da benzeri herhangi bir alt etki aynı olmalıdır bar.foo.example.com? İkincisi, aynı zamanda herhangi bir alt etki alanındaki herhangi bir alt etki alanıyla da eşleşmelidir bar.baz.foo.example.com?
  • Is .foo.example.com(başında nokta) izin ve eğer öyleyse o zaman ne eşleşmesi gerekir?
  • Yıldız ( *) değerinin ( *.example.com, *example.com) bir parçası olarak izin veriliyor ve eğer öyleyse nasıl ele alınır?

Resmi şartnamelerin eksikliği karışıklığa ve hatalara yol açar. Burada , proxy yapılandırması için doğru ve tutarlı destek sağlamayı amaçlayan libproxy kütüphanesinden bahsetmek gerekir . Projenin ana sayfasından :

şu soruyu cevaplamak için libproxy var: Bir ağ kaynağı verildiğinde, ona nasıl ulaşabilirim? Tüm ayrıntıları işler ve programlamaya geri dönmenizi sağlar.

Daha fazla okuma:


Libproxy, gündeme getirdiğiniz sorular hakkında ne söylemek zorunda? İlgilendiğim kişi: ".foo.example.com foo.example.com ile eşleşmeli mi, eşleşmemeli mi?"
Robin Winslow


13

Bu bir standarttan ziyade bir sözleşmedir. Büyük olasılıkla bağlantıları yapan bir veya daha fazla protokol işleyici kütüphanesi tarafından desteklenir. Java, protokol kitaplıklarında benzer özellikler kullanır.

Ortak sözleşmeleri anlamak ve kullanmak, gelişimi çok daha basit hale getirir. Ayrıca, en az sürpriz ilkesinin uygulanmasına ve programların daha muhtemel hale getirilmesine yardımcı olur just work.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.