Kodėl „Java“ jūsų HTTP užklausai pasirinko SOCKS tarpinį serverį
Prieš taikydami senus „Windows“ tarpinio serverio sprendimus patikrinkite „ProxySelector“ rezultatą ir galiojančius JVM nustatymus.
„Java“ užklausa gali susidurti su keliais tarpinio serverio šaltiniais: aiškia kliento konfigūracija, numatytuoju selektoriumi, JVM tinklo savybėmis ir palaikomais operacinės sistemos nustatymais. Kai žurnale netikėtai minima SOCKS, nustatykite, kuris šaltinis jį pasirinko.
Jei kodas naudoja numatytąjį selektorių, patikrinkite sprendimą tiksliai paskirties vietai:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Tai parodo selektoriaus kandidatus. Tai neįrodo, kuri jungtis galiausiai pavyko, o klientas su savo aiškiu maršrutu gali pasirinkti kitaip.
Patikrinkite galiojančius nustatymus
Peržiūrėkite http.proxyHost, https.proxyHost, socksProxyHost, jų prievadus ir java.net.useSystemProxies. JDK tinklo savybių dokumentacija aprašo jų apimtį ir pirmumą. Sistemos tarpinio serverio aptikimas tikrinamas paleidžiant; nustatykite jį sąmoningai, kai paleidžiate JVM.
Istoriniai atsakymai aprašo konkrečias senų „Windows“ dialogų ir senų JDK kombinacijas. Tie pranešimai gali paaiškinti sprendimo kilmę, bet neįrodo, kad dabartinė vykdymo aplinka turi tą pačią klaidą. Užrašykite vykdymo aplinkos versiją ir selektoriaus išvestį prieš keisdami operacinės sistemos nustatymus visoms programoms.
Jei programai vienam klientui reikia HTTP tarpinio serverio, aiški tarpinio serverio konfigūracija gali tą poreikį padaryti aiškesnį. Jei jai reikia centralizuoto automatinio maršrutizavimo, ištirkite, kodėl selektorius gavo arba grąžino netikėtą SOCKS įrašą.
Pasirinktinis selektorius turėtų išsaugoti sąmoningus apėjimus ir klaidų apdorojimą. Filtruojant visus SOCKS kandidatus neatsižvelgiant į nieką, gali nutrūkti jungtys, kurios turėjo būti naudojamos. Ištaisykite neteisingą taisyklę kuo mažesne apimtimi, kurią galite nustatyti.