Spring WebClient mei Jetty: gewoane HTTP-proxy sûnder CONNECT
Brûk de Jetty-connector fan Spring mei oerienkommende HTTP/1.1-klant- en proxyprotokollen as in gewoane trochstjoerde HTTP-oanfraach nedich is.
De HTTP-proxyhandler fan Reactor Netty makket in CONNECT-tunnel sels foar in gewoan HTTP-doel. As de bedoelde proxy ynstee gewoane HTTP/1.1-trochstjoering akseptearret, kin Spring WebClient in oare stipe connector brûke.
Foar Spring 6.2 mei de kliïnt-API fan Jetty 12.0.35 en in kompatibele Jetty Reactive Streams-yntergraasje:
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 en JettyClientHttpConnector binne Spring-klassen. Behear it starten en stopjen fan de levere Jetty-klant fia de normale libbenssyklus fan de applikaasje.
De HTTP/1.1-proxy fan Jetty kin in gewoane HTTP/1.1-oanfraach trochstjoere sûnder tunnel as de protokollen fan it doel en de klant-proxy oerienkomme. It requiresTunnel-belied brûkt CONNECT foar befeilige doelen en foar ynkompatible protokolpaden.
Dit is gjin manier om CONNECT út in gewoane HTTPS-tunnel te ferwiderjen. Hâld it skema fan it doel korrekt.
Brûk addProxy yn de neamde Jetty-API. getProxies jout in net-wizige list werom, dus it âldere resept getProxies().add(...) is net syn hjoeddeistige mutaasje-ynterface.
Foar iepenbiere HTTP-doelen op in tastiene iepenbiere proxy-route leveret de HTTP-proxylist kandidaten foar de proxyhost en -poart fan Jetty. Lês de werklike proxy-antwurd as jo connectors fergelykje. Autentikaasje, doelbelied en in net beskikber doel bliuwe los fan de kar tusken trochstjoerd HTTP en CONNECT.