Zakaj je Java za vašo zahtevo HTTP izbrala proxy SOCKS
Pred uporabo starih okrog windows proxyja preverite rezultat ProxySelector in veljavne nastavitve JVM.
Zahteva Java lahko naleti na več proxy vhodov: izrecno konfiguracijo odjemalca, privzeti izbirnik, omrežne lastnosti JVM in podprte nastavitve operacijskega sistema. Ko se v dnevniku nepričakovano omeni SOCKS, ugotovite, kateri vhod ga je izbral.
Pri kodi, ki uporablja privzeti izbirnik, preglejte odločitev za točno ciljno mesto:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
To poroča o kandidatih izbirnika. Ne dokazuje, katera povezava je na koncu uspela, in odjemalec z lastno izrecno potjo se lahko odloči drugače.
Preverite veljavne nastavitve
Preglejte http.proxyHost, https.proxyHost, socksProxyHost, njihova vrata in java.net.useSystemProxies. dokumentacija JDK o omrežnih lastnostih opisuje njihov obseg in prednost. Odkrivanje sistemskega proxyja se preveri ob zagonu; nastavite ga namerno ob zagonu JVM.
Zgodovinski odgovori opisujejo določene kombinacije starih okrog Windows in starih JDK. Ta poročila lahko pojasnijo izvor obhoda, ne dokazujejo pa, da ima trenutno izvajalno okolje isto napako. Preden spremenite nastavitve operacijskega sistema za vsako aplikacijo, zabeležite različico izvajalnega okolja in izpis izbirnika.
Če aplikacija potrebuje proxy HTTP za enega odjemalca, lahko izrecna konfiguracija proxyja to zahtevo pojasni. Če potrebuje osrednje samodejno usmerjanje, raziščite, zakaj je izbirnik prejel ali vrnil nepričakovan vnos SOCKS.
Izbirnik po meri mora ohraniti namerne obhode in obravnavo napak. Neselektivno filtriranje vsakega kandidata SOCKS lahko prekine povezave, ki bi ga morale uporabljati. Popravite napačno pravilo v najmanjšem obsegu, ki ga lahko ugotovite.