Spring WebClient mat Jetty: einfachen HTTP-Proxy ouni CONNECT
Benotzt dem Spring säin Jetty-Connector mat passenden HTTP/1.1-Client- an Proxyprotokoller, wann eng gewéinlech weidergeschéckt HTTP-Ufro gebraucht gëtt.
Den HTTP-Proxy-Handler vu Reactor Netty baut en CONNECT-Tunnel och fir en einfachen HTTP-Zil. Wann de virgesinnene Proxy amplaz eng gewéinlech HTTP/1.1-Weidergab akzeptéiert, kann de Spring WebClient en aneren ënnerstëtzten Connector benotzen.
Fir Spring 6.2 mat der Client-API vu Jetty 12.0.35 an enger kompatibeler Jetty Reactive Streams-Integratioun:
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 an JettyClientHttpConnector sinn Spring-Klassen. Verwalte Start a Stopp vum geliwwerten Jetty-Client iwwer den normale Liewenszyklus vun der Applikatioun.
Den HTTP/1.1-Proxy vu Jetty kann eng gewéinlech HTTP/1.1-Ufro ouni Tunnel weiderginn, wann d'Protokoller vum Zil a vum Client-Proxy iwwerenee stëmmen. Seng requiresTunnel-Politik benotzt CONNECT fir sécher Ziler a fir inkompatibel Protokollweeër.
Dëst ass kee Wee fir CONNECT aus engem gewéinlechen HTTPS-Tunnel ze entfernen. Halt den Schema vum Zil richteg.
Benotzt addProxy an der genannter Jetty-API. getProxies gëtt eng onverännerbar Lëscht zréck, dofir ass dat eelert Rezept getProxies().add(...) net seng aktuell Mutatiounsschnittstell.
Fir ëffentlech HTTP-Ziler op enger erlaabter ëffentlecher Proxy-Route liwwert d'HTTP-Proxy-Lëscht Kandidaten fir den Host a Port vum Jetty-Proxy. Liest déi tatsächlech Proxy-Antwert, wann Dir Connectoren vergläicht. Authentifikatioun, Zilpolitik an en net erreechbart Zil bleiwen getrennt vun der Wiel tëscht weidergeschécktem HTTP a CONNECT.