Spring WebClient kasama ang Jetty: Karaniwang HTTP Proxy na Walang CONNECT
Gamitin ang Jetty connector ng Spring na may tugmang HTTP/1.1 na protokol ng client at proxy kapag kailangan ang karaniwang ipinapasa na HTTP request.
Ang HTTP proxy handler ng Reactor Netty ay nagtatatag ng CONNECT tunnel kahit para sa karaniwang HTTP destinasyon. Kung ang inilaan na proxy ay tumatanggap ng karaniwang HTTP/1.1 pagpasa, maaaring gumamit ang Spring WebClient ng ibang sinusuportahang connector.
Para sa Spring 6.2 kasama ang client API ng Jetty 12.0.35 at katugmang Jetty Reactive Streams integration:
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();Ang WebClient at JettyClientHttpConnector ay mga klase ng Spring. Pamahalaan ang pagsisimula at paghinto ng ibinigay na Jetty client sa pamamagitan ng karaniwang lifecycle ng aplikasyon.
Ang HTTP/1.1 proxy ng Jetty ay maaaring magpasa ng karaniwang HTTP/1.1 request nang walang tunnel kapag tugma ang protokol ng destinasyon at ng client proxy. Ginagamit ng requiresTunnel policy nito ang CONNECT para sa mga secure na destinasyon at sa mga hindi katugmang protocol path.
Hindi ito paraan upang alisin ang CONNECT mula sa karaniwang HTTPS tunnel. Panatilihing tama ang scheme ng destinasyon.
Gamitin ang addProxy sa nakasaad na Jetty API. Nagbabalik ang getProxies ng listahang hindi mababago, kaya ang lumang getProxies().add(...) recipe ay hindi ang kasalukuyang interface ng pagbabago nito.
Para sa mga pampublikong HTTP destinasyon sa pinapayagang pampublikong proxy route, ang listahan ng HTTP proxy ay nagbibigay ng mga kandidato para sa host at port ng Jetty proxy. Basahin ang aktwal na tugon ng proxy kapag inihahambing ang mga connector. Ang authentication, patakaran ng destinasyon at hindi available na destinasyon ay nananatiling hiwalay sa pagpili ng ipinapasa na HTTP o CONNECT.