Spring WebClient sa Jetty: obično HTTP posredovanje bez CONNECT
Koristite Jetty konektor iz Springa sa usklađenim HTTP/1.1 protokolima klijenta i posrednika kada je potreban običan prosleđeni HTTP zahtev.
HTTP posrednički rukovalac u Reactor Netty uspostavlja CONNECT tunel čak i za obično HTTP odredište. Ako predviđeni posrednik prihvata obično HTTP/1.1 prosleđivanje, Spring WebClient može koristiti drugi podržani konektor.
Za Spring 6.2 sa klijentskim API-jem Jetty 12.0.35 i kompatibilnom Jetty Reactive Streams integracijom:
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 i JettyClientHttpConnector su Spring klase. Upravljajte pokretanjem i zaustavljanjem isporučenog Jetty klijenta kroz uobičajeni životni ciklus aplikacije.
HTTP/1.1 posrednik u Jetty može proslediti običan HTTP/1.1 zahtev bez tunela kada se protokoli odredišta i klijentskog posrednika poklapaju. Njegova requiresTunnel politika koristi CONNECT za bezbedna odredišta i za nekompatibilne putanje protokola.
Ovo nije način da se CONNECT ukloni iz običnog HTTPS tunela. Zadržite ispravnu šemu odredišta.
Koristite addProxy u navedenom Jetty API-ju. getProxies vraća listu koja se ne može menjati, pa stari recept getProxies().add(...) nije njegov trenutni interfejs za izmene.
Za javna HTTP odredišta na dozvoljenoj javnoj posredničkoj ruti, lista HTTP posrednika daje kandidate za host i port Jetty posrednika. Čitajte stvarni odgovor posrednika kada upoređujete konektore. Autentifikacija, politika odredišta i nedostupno odredište ostaju odvojeni od izbora prosleđenog HTTP ili CONNECT.