Spring WebClient a Jettyvel: egyszerű HTTP-proxy CONNECT nélkül
Használja a Spring Jetty-összekötőjét megfelelő HTTP/1.1 ügyfél- és proxyprotokollokkal, amikor közönséges továbbított HTTP-kérésre van szükség.
A Reactor Netty HTTP-proxy kezelője még egyszerű HTTP-cél esetén is CONNECT-alagutat hoz létre. Ha a szándékolt proxy inkább közönséges HTTP/1.1-továbbítást fogad el, a Spring WebClient más támogatott összekötőt is használhat.
A Spring 6.2-höz a Jetty 12.0.35 ügyfél-API-jával és kompatibilis Jetty Reactive Streams-integrációval:
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();
A WebClient és a JettyClientHttpConnector Spring-osztályok. A mellékelt Jetty-ügyfél indítását és leállítását az alkalmazás szokásos életciklusán keresztül kezelje.
A Jetty HTTP/1.1-proxyja alagút nélkül továbbíthat egy közönséges HTTP/1.1-kérést, ha a cél és az ügyfél-proxy protokollja megegyezik. A requiresTunnel szabályzata CONNECT-et használ a biztonságos célokhoz és az inkompatibilis protokollútvonalakhoz.
Ez nem módja annak, hogy eltávolítsuk a CONNECT-et egy közönséges HTTPS-alagútból. Tartsa helyesen a cél sémáját.
Használja az addProxy-t a megadott Jetty API-ban. A getProxies módosíthatatlan listát ad vissza, ezért a régebbi getProxies().add(...) recept nem a jelenlegi módosítási felület.
A nyilvános HTTP-célokhoz engedélyezett nyilvános proxy-útvonalon a HTTP-proxylista jelölteket kínál a Jetty proxy-gazdagépéhez és portjához. Hasonlítsa össze az összekötőket a tényleges proxyválasz olvasásával. A hitelesítés, a célszabályzat és az elérhetetlen cél továbbra is elkülönül a továbbított HTTP és a CONNECT közötti választástól.