Spring WebClient s Jettyjem: obično HTTP proxy bez CONNECT
Koristite Jetty konektor Springa s odgovarajućim HTTP/1.1 klijentskim i proxy protokolima kada je potreban običan proslijeđeni HTTP zahtjev.
HTTP proxy rukovatelj Reactor Nettyja uspostavlja CONNECT tunel čak i za obično HTTP odredište. Ako predviđeni proxy umjesto toga prihvaća obično HTTP/1.1 prosljeđivanje, Spring WebClient može koristiti drugi podržani konektor.
Za Spring 6.2 s klijentskim API-jem Jetty 12.0.35 i kompatibilnom integracijom 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 i JettyClientHttpConnector Spring su klase. Upravljajte pokretanjem i zaustavljanjem isporučenog Jetty klijenta kroz uobičajeni životni ciklus aplikacije.
Jettyjev HTTP/1.1 proxy može proslijediti običan HTTP/1.1 zahtjev bez tunela kada se protokoli odredišta i klijenta-proxyja podudaraju. Njegova politika requiresTunnel koristi CONNECT za sigurna odredišta i za nekompatibilne protokolne putanje.
Ovo nije način da se CONNECT ukloni iz običnog HTTPS tunela. Održavajte shemu odredišta ispravnom.
Koristite addProxy u navedenom Jetty API-ju. getProxies vraća nepromjenjivu listu, pa stariji recept getProxies().add(...) nije njegovo trenutno sučelje za izmjenu.
Za javna HTTP odredišta na dopuštenoj javnoj proxy ruti, popis HTTP proxyja daje kandidate za Jettyjev proxy host i port. Pročitajte stvarni odgovor proxyja kada uspoređujete konektore. Autentifikacija, politika odredišta i nedostupno odredište ostaju odvojeni od odabira proslijeđenog HTTP-a ili CONNECT-a.