Reactor Netty HTTP tarpinio serverio apdorojimo priemonė sukuria CONNECT tunelį net ir paprastam HTTP tikslui. Jei numatytasis tarpinis serveris priima įprastą HTTP/1.1 persiuntimą, Spring WebClient gali naudoti kitą palaikomą jungtį.

Spring 6.2 su Jetty 12.0.35 kliento API ir suderinta Jetty Reactive Streams integracija:

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 ir JettyClientHttpConnector yra Spring klasės. Valdykite pateikto Jetty kliento paleidimą ir sustabdymą per įprastą programos gyvavimo ciklą.

Jetty HTTP/1.1 tarpinis serveris gali persiųsti įprastą HTTP/1.1 užklausą be tunelio, kai tikslo ir kliento tarpinio serverio protokolai sutampa. Jo requiresTunnel politika naudoja CONNECT saugiems tikslams ir nesuderinamiems protokolų keliams.

Tai nėra būdas pašalinti CONNECT iš įprasto HTTPS tunelio. Išlaikykite teisingą tikslo schemą.

Nurodytoje Jetty API naudokite addProxy. getProxies grąžina nekeičiamą sąrašą, todėl senesnis getProxies().add(...) receptas nėra dabartinė jo keitimo sąsaja.

Viešiems HTTP tikslams leistiname viešo tarpinio serverio maršrute HTTP tarpinių serverių sąrašas pateikia kandidatus Jetty tarpinio serverio hostui ir prievadui. Lygindami jungtis skaitykite tikrąjį tarpinio serverio atsakymą. Autentifikavimas, tikslo politika ir nepasiekiamas tikslas lieka atskirai nuo pasirinkimo siųsti HTTP ar naudoti CONNECT.

Susiję straipsniai