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.

Relaterte artiklar