Spring WebClient med Jetty: vanleg HTTP-proxy utan CONNECT
Bruk Jetty-kontakten til Spring med samsvarande HTTP/1.1-protokollar for klient og proxy når ein vanleg vidaresend HTTP-førespurnad er nødvendig.
HTTP-proxyhandsamaren til Reactor Netty opprettar ein CONNECT-tunnel sjølv for eit vanleg HTTP-mål. Viss den tiltenkte proxyen godtek vanleg HTTP/1.1-vidaresending i staden, kan Spring WebClient bruke ein annan støtta kontakt.
For Spring 6.2 med klient-API-et til Jetty 12.0.35 og kompatibel Jetty Reactive Streams-integrering:
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 og JettyClientHttpConnector er Spring-klassar. Handsama oppstart og nedstenging av den medfølgjande Jetty-klienten gjennom den vanlege livssyklusen til applikasjonen.
HTTP/1.1-proxyen til Jetty kan vidaresende ein vanleg HTTP/1.1-førespurnad utan tunnel når protokollane til målet og klientproxyen samsvarar. requiresTunnel-policyen brukar CONNECT for sikre mål og for inkompatible protokollvegar.
Dette er ikkje ein måte å fjerne CONNECT frå ein vanleg HTTPS-tunnel. Hald scheme-et til målet rett.
Bruk addProxy i den oppgjevne Jetty-API-en. getProxies returnerer ei liste som ikkje kan endrast, så den eldre oppskrifta getProxies().add(...) er ikkje det gjeldande endringsgrensesnittet.
For offentlege HTTP-mål på ein tillaten offentleg proxy-rute gir HTTP-proxylista kandidatar for vert og port til Jetty-proxyen. Les den faktiske proxyresponsen når du samanliknar kontaktar. Autentisering, målpolicy og eit utilgjengeleg mål held fram med å vere skilde frå valet mellom vidaresend HTTP og CONNECT.