Reactor Netty se HTTP-proxyhandler vestig 'n CONNECT-tonnel selfs vir 'n gewone HTTP-bestemming. As die bedoelde proxy eerder gewone HTTP/1.1-deursturing aanvaar, kan Spring WebClient 'n ander ondersteunde connector gebruik.

Vir Spring 6.2 met Jetty 12.0.35 se kliënt-API en 'n versoenbare Jetty Reactive Streams-integrasie:

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 en JettyClientHttpConnector is Spring-klasse. Bestuur die begin en stop van die verskafde Jetty-kliënt deur die toepassing se normale lewensiklus.

Jetty se HTTP/1.1-proxy kan 'n gewone HTTP/1.1-versoek sonder 'n tonnel deurstuur wanneer die teiken- en kliënt-proxyprotokolle ooreenstem. Sy requiresTunnel-beleid gebruik CONNECT vir beveiligde teikens en vir onversoenbare protokolroetes.

Dit is nie 'n manier om CONNECT uit 'n gewone HTTPS-tonnel te verwyder nie. Hou die bestemming se skema korrek.

Gebruik addProxy in die genoemde Jetty-API. getProxies gee 'n onveranderbare lys terug, so die ou getProxies().add(...)-resep is nie die huidige wysigingskoppelvlak nie.

Vir openbare HTTP-teikens op 'n toegelate openbare-proxyroete verskaf die HTTP-proxylys kandidate vir Jetty se proxy-gasheer en -poort. Lees die werklike proxy-antwoord wanneer jy connectore vergelyk. Verifikasie, bestemmingsbeleid en 'n onbeskikbare teiken bly apart van die keuse tussen deurgestuurde HTTP en CONNECT.

Verwante artikels