Spring WebClient koos Jettyga: tavaline HTTP-proksimine ilma CONNECT-ita
Kasutage Springi Jetty-pistikut sobivate HTTP/1.1 kliendi- ja puhverserveri protokollidega, kui on vaja tavalist edastatud HTTP-päringut.
Reactor Netty HTTP-puhverserveri haldur loob CONNECT-tunneli ka tavalise HTTP-sihtkoha jaoks. Kui kavandatud puhverserver aktsepteerib hoopis tavalist HTTP/1.1 edastust, saab Spring WebClient kasutada teist toetatud pistikut.
Spring 6.2 jaoks Jetty 12.0.35 kliendi API ja ühilduva Jetty Reactive Streams integratsiooniga:
var jetty = new org.eclipse.jetty.client.HttpClient(
new org.eclipse.jetty.client.transport.HttpClientTransportOverHTTP());
jetty.getProxyConfiguration().addProxy(
new org.eclipse.jetty.client.HttpProxy("proxy.example", 8080));
var client = WebClient.builder()
.clientConnector(new JettyClientHttpConnector(jetty))
.build();
WebClient ja JettyClientHttpConnector on Springi klassid. Halda etteantud Jetty kliendi käivitamist ja peatamist rakenduse tavapärase elutsükli kaudu.
Jetty HTTP/1.1 puhverserver saab edastada tavalist HTTP/1.1 päringut ilma tunnelita, kui sihtkoha ja kliendi-puhverserveri protokollid kattuvad. Selle requiresTunnel-poliitika kasutab CONNECT-i turvaliste sihtkohtade ja ühildumatute protokolliteede jaoks.
See ei ole viis CONNECT-i eemaldamiseks tavalisest HTTPS-tunnelist. Hoidke sihtkoha skeem õige.
Kasutage addProxy näidatud Jetty API-s. getProxies tagastab muutmatu loendi, seega vanem retsept getProxies().add(...) ei ole selle praegune muutmislides.
Avalike HTTP-sihtkohtade jaoks lubatud avalikul puhverserveri marsruudil pakub HTTP-puhverserverite loend kandidaate Jetty puhverserveri hosti ja pordi jaoks. Võrreldes pistikuid lugege tegelikku puhverserveri vastust. Autentimine, sihtkoha poliitika ja kättesaamatu sihtkoht jäävad edastatud HTTP ja CONNECT-i valikust eraldi.