Reactor Netty HTTP-proxyhandler opretter en CONNECT-tunnel, selv for en almindelig HTTP-destination. Hvis den tilsigtede proxy i stedet accepterer almindelig HTTP/1.1-videresendelse, kan Spring WebClient bruge en anden understøttet connector.

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

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. Administrer opstart og nedlukning af den leverede Jetty-klient via applikationens normale livscyklus.

Jettys HTTP/1.1-proxy kan videresende en almindelig HTTP/1.1-anmodning uden tunnel, når destinationens og klient-proxyens protokoller matcher. Dens requiresTunnel-politik bruger CONNECT til sikre destinationer og til inkompatible protokolveje.

Dette er ikke en måde at fjerne CONNECT fra en almindelig HTTPS-tunnel. Hold destinationens scheme korrekt.

Brug addProxy i den angivne Jetty-API. getProxies returnerer en uændrelig liste, så den ældre opskrift getProxies().add(...) er ikke dens nuværende mutationsgrænseflade.

For offentlige HTTP-destinationer på en tilladt offentlig proxy-rute leverer HTTP-proxylisten kandidater til Jettys proxy-host og -port. Læs det faktiske proxy-svar, når du sammenligner connectors. Godkendelse, destinationspolitik og en utilgængelig destination forbliver adskilt fra valget mellem videresendt HTTP og CONNECT.

Relaterede artikler