Egy Java-kérés több proxy-bemenettel találkozhat: a kliens explicit konfigurációjával, az alapértelmezett választóval, a JVM hálózati tulajdonságaival és a támogatott operációsrendszer-beállításokkal. Amikor egy napló váratlanul SOCKS-t említ, állapítsa meg, melyik bemenet választotta.

Az alapértelmezett választót használó kód esetében vizsgálja meg a döntést a pontos célhoz:

URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
    System.out.println(selector.select(target));
}

Ez a választó jelöltjeit jelenti. Nem bizonyítja, melyik kapcsolat sikerült végül, és egy saját explicit útvonallal rendelkező kliens másként dönthet.

Ellenőrizze a tényleges beállításokat

Tekintse át a http.proxyHost, https.proxyHost, socksProxyHost értékét, portjaikat és a java.net.useSystemProxies értékét. A JDK hálózati tulajdonságainak dokumentációja leírja hatókörüket és elsőbbségüket. A rendszerproxy felderítése indításkor történik; a JVM indításakor szándékosan állítsa be.

A történelmi válaszok régi Windows-párbeszédablakok és régi JDK-k meghatározott kombinációit írják le. Ezek a beszámolók magyarázhatják egy megoldás eredetét, de nem bizonyítják, hogy egy jelenlegi futásidejű környezetben ugyanaz a hiba áll fenn. Jegyezze fel a futásidejű környezet verzióját és a választó kimenetét, mielőtt minden alkalmazás operációsrendszer-beállításait módosítaná.

Ha az alkalmazásnak egy klienshez HTTP-proxyra van szüksége, egy explicit proxykonfiguráció világosabbá teheti ezt a követelményt. Ha központi automatikus útválasztásra van szüksége, vizsgálja meg, miért kapta vagy adta vissza a választó a váratlan SOCKS-bejegyzést.

Egy egyéni választónak meg kell őriznie a szándékos kihagyásokat és a hibakezelést. Az összes SOCKS-jelölt válogatás nélküli szűrése megszakíthat olyan kapcsolatokat, amelyeknek egyet kellett volna használniuk. A legkisebb azonosítható hatókörrel javítsa a helytelen szabályt.

Kapcsolódó cikkek