Reactor Netty's HTTP proxy handler establishes a CONNECT tunnel even for a plain HTTP destination. If the intended proxy accepts ordinary HTTP/1.1 forwarding instead, Spring WebClient can use another supported connector.

For Spring 6.2 with Jetty 12.0.35's client API and compatible 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 and JettyClientHttpConnector are Spring classes. Manage the supplied Jetty client's startup and shutdown through the application's normal lifecycle.

Jetty's HTTP/1.1 proxy can forward an ordinary HTTP/1.1 request without a tunnel when the target and client-proxy protocols match. Its requiresTunnel policy uses CONNECT for secure targets and for incompatible protocol paths.

This is not a way to remove CONNECT from an ordinary HTTPS tunnel. Keep the destination's scheme correct.

Use addProxy in the stated Jetty API. getProxies returns an unmodifiable list, so the older getProxies().add(...) recipe is not its current mutation interface.

For public HTTP targets on an allowed public-proxy route, the HTTP proxy list supplies candidates for Jetty’s proxy host and port. Read the actual proxy response when comparing connectors. Authentication, destination policy and an unavailable target remain separate from choosing forwarded HTTP versus CONNECT.

Ũhoro ũhĩtĩte