Reactor Nettys HTTP-proxyhåndterer oppretter en CONNECT-tunnel selv for et vanlig HTTP-mål. Hvis den tiltenkte proxyen godtar vanlig HTTP/1.1-videresending i stedet, kan Spring WebClient bruke en annen støttet kontakt.

For Spring 6.2 med Jetty 12.0.35s klient-API og kompatibel Jetty Reactive Streams-integrasjon:

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-klasser. Håndter oppstart og nedstenging av den medfølgende Jetty-klienten gjennom applikasjonens vanlige livssyklus.

Jetty sin HTTP/1.1-proxy kan videresende en vanlig HTTP/1.1-forespørsel uten tunnel når mål- og klientproxyprotokollene samsvarer. requiresTunnel-policyen bruker CONNECT for sikre mål og for inkompatible protokollveier.

Dette er ikke en måte å fjerne CONNECT fra en vanlig HTTPS-tunnel. Hold målets scheme riktig.

Bruk addProxy i den angitte Jetty-API-en. getProxies returnerer en liste som ikke kan endres, så den eldre oppskriften getProxies().add(...) er ikke dens nåværende endringsgrensesnitt.

For offentlige HTTP-mål på en tillatt offentlig proxy-rute gir HTTP-proxylisten kandidater for Jetty-proxyens vert og port. Les den faktiske proxyresponsen når du sammenligner kontakter. Autentisering, målpolicy og et utilgjengelig mål forblir atskilt fra å velge videresendt HTTP kontra CONNECT.

Relaterte artikler