O xestor de proxy HTTP de Reactor Netty establece un túnel CONNECT mesmo para un destino HTTP simple. Se o proxy previsto acepta no seu lugar un reenvío HTTP/1.1 ordinario, Spring WebClient pode usar outro conector compatible.

Para Spring 6.2 coa API de cliente de Jetty 12.0.35 e unha integración compatible de 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 e JettyClientHttpConnector son clases de Spring. Xestiona o arranque e a parada do cliente Jetty subministrado mediante o ciclo de vida normal da aplicación.

O proxy HTTP/1.1 de Jetty pode reenviar unha solicitude HTTP/1.1 ordinaria sen túnel cando coinciden os protocolos de destino e de cliente-proxy. A súa política requiresTunnel usa CONNECT para destinos seguros e para rutas de protocolo incompatibles.

Isto non é unha forma de eliminar CONNECT dun túnel HTTPS ordinario. Mantén correcto o esquema do destino.

Usa addProxy na API de Jetty indicada. getProxies devolve unha lista non modificable, así que a receita anterior getProxies().add(...) non é a súa interface de mutación actual.

Para destinos HTTP públicos nunha ruta de proxy público permitida, a lista de proxies HTTP ofrece candidatos para o host e o porto do proxy de Jetty. Le a resposta real do proxy ao comparar conectores. A autenticación, a política de destino e un destino non dispoñible seguen sendo independentes de escoller HTTP reenviado ou CONNECT.

Artigos relacionados