HTTP proxy handler Reactor Netty vytváří tunel CONNECT i pro obyčejný HTTP cíl. Pokud zamýšlená proxy místo toho přijímá běžné předávání HTTP/1.1, může Spring WebClient použít jiný podporovaný konektor.

Pro Spring 6.2 s klientským API Jetty 12.0.35 a kompatibilní integrací Jetty Reactive Streams:

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 a JettyClientHttpConnector jsou třídy Springu. Spouštění a zastavení dodaného klienta Jetty spravujte běžným životním cyklem aplikace.

Proxy HTTP/1.1 v Jetty může předávat běžný požadavek HTTP/1.1 bez tunelu, když se protokoly cíle a klienta-proxy shodují. Jeho politika requiresTunnel používá CONNECT pro zabezpečené cíle a nekompatibilní cesty protokolu.

Toto není způsob, jak odstranit CONNECT z běžného tunelu HTTPS. Udržujte schéma cíle správné.

V uvedeném rozhraní Jetty API použijte addProxy. getProxies vrací neměnný seznam, takže starší recept getProxies().add(...) není jeho současné rozhraní pro změnu.

Pro veřejné HTTP cíle na povolené veřejné proxy trase poskytuje seznam HTTP proxy kandidáty pro hostitele a port proxy Jetty. Při porovnávání konektorů čtěte skutečnou odpověď proxy. Ověřování, politika cíle a nedostupný cíl zůstávají oddělené od volby mezi předávaným HTTP a CONNECT.

Související články