Spring WebClient ar Jetty: vienkārša HTTP starpniekošana bez CONNECT
Izmantojiet Spring Jetty savienotāju ar saskaņotiem HTTP/1.1 klienta un starpniekservera protokoliem, ja nepieciešams parasts pārsūtīts HTTP pieprasījums.
Reactor Netty HTTP starpniekservera apdarinātājs izveido CONNECT tuneli pat vienkāršam HTTP mērķim. Ja paredzētais starpniekserveris pieņem parastu HTTP/1.1 pārsūtīšanu, Spring WebClient var izmantot citu atbalstītu savienotāju.
Spring 6.2 ar Jetty 12.0.35 klienta API un saderīgu Jetty Reactive Streams integrāciju:
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 un JettyClientHttpConnector ir Spring klases. Pārvaldiet piegādātā Jetty klienta palaišanu un apturēšanu lietojumprogrammas parastajā dzīves ciklā.
Jetty HTTP/1.1 starpniekserveris var pārsūtīt parastu HTTP/1.1 pieprasījumu bez tuneļa, kad mērķa un klienta starpniekservera protokoli sakrīt. Tā requiresTunnel politika izmanto CONNECT drošiem mērķiem un nesaderīgiem protokolu ceļiem.
Tas nav veids, kā noņemt CONNECT no parasta HTTPS tuneļa. Saglabājiet pareizu mērķa shēmu.
Norādītajā Jetty API izmantojiet addProxy. getProxies atgriež nemaināmu sarakstu, tāpēc vecā getProxies().add(...) recepte nav tā pašreizējā modificēšanas saskarne.
Publiskiem HTTP mērķiem atļautā publiska starpniekservera maršrutā HTTP starpniekserveru saraksts nodrošina kandidātus Jetty starpniekservera resursdatoram un portam. Salīdzinot savienotājus, lasiet faktisko starpniekservera atbildi. Autentifikācija, mērķa politika un nepieejams mērķis paliek atsevišķi no izvēles pārsūtīt HTTP vai izmantot CONNECT.