Kvifor Java valde ein SOCKS-proxy for HTTP-førespurnaden din
Undersøk ProxySelector-resultatet og dei effektive JVM-innstillingane før du brukar gamle Windows-proxyworkaroundar.
Ein Java-førespurnad kan møte fleire proxyinndata: eksplisitt klientkonfigurasjon, standardveljaren, JVM-nettverkseigenskapar og støtta operativsysteminnstillingar. Når ein logg uventa nemner SOCKS, finn ut kva inndata som valde det.
For kode som brukar standardveljaren, undersøk avgjerda for den nøyaktige destinasjonen:
URI target = URI.create("https://example.com/");
ProxySelector selector = ProxySelector.getDefault();
if (selector != null) {
System.out.println(selector.select(target));
}
Dette rapporterer kandidatane til veljaren. Det beviser ikkje kva tilkopling som til slutt lukkast, og ein klient med sin eigen eksplisitte rute kan gjere eit anna val.
Kontroller dei effektive innstillingane
Gå gjennom http.proxyHost, https.proxyHost, socksProxyHost, portane deira og java.net.useSystemProxies. JDK-dokumentasjonen for nettverkseigenskapar skildrar omfanget og prioriteten deira. Systemproxyoppdaging blir kontrollert ved oppstart; set det medvite når du startar JVM-en.
Historiske svar skildrar spesifikke kombinasjonar av gamle Windows-dialogar og gamle JDK-ar. Desse rapportane kan forklare opphavet til ein workaround, men dei fastslår ikkje at ein noverande køyretid har same feilen. Registrer køyretidsversjonen og utdataa til veljaren før du endrar operativsysteminnstillingar for alle applikasjonar.
Viss applikasjonen treng ein HTTP-proxy for éin klient, kan ein eksplisitt proxykonfigurasjon gjere det kravet tydelegare. Viss han treng sentral automatisk ruting, undersøk kvifor veljaren tok imot eller returnerte den uventa SOCKS-oppføringa.
Ein tilpassa veljar bør ta vare på tilsikta omgåingar og feilhandtering. Å filtrere alle SOCKS-kandidatar utan skilnad kan bryte tilkoplingar som skulle bruke ein. Rett den feilaktige regelen med det minste omfanget du kan identifisere.