Spring WebClient iyo Jetty: HTTP proxy caadi ah oo aan CONNECT lahayn
Isticmaal isku-xirka Jetty ee Spring oo leh borotokoolo HTTP/1.1 oo macmiil iyo proxy is waafaqsan marka loo baahdo codsi HTTP caadi ah oo la gudbiyay.
Maareeyaha proxy HTTP ee Reactor Netty wuxuu dhisaa tunnel CONNECT xitaa bartilmaameed HTTP caadi ah. Haddii proxy-ga loogu talagalay uu aqbalo gudbin HTTP/1.1 caadi ah, Spring WebClient wuxuu isticmaali karaa isku-xir kale oo la taageeray.
Spring 6.2 oo leh API macmiilka Jetty 12.0.35 iyo is-dhexgalka Jetty Reactive Streams ee waafaqsan:
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 iyo JettyClientHttpConnector waa fasallo Spring. Maamul bilaabista iyo joojinta macmiilka Jetty ee la bixiyay iyada oo loo marayo wareegga nolosha caadiga ah ee barnaamijka.
Proxy-ga HTTP/1.1 ee Jetty wuxuu gudbin karaa codsi HTTP/1.1 caadi ah oo aan tunnel lahayn marka borotokoolada bartilmaameedka iyo proxy-macmiilka ay is waafaqaan. Siyaasaddiisa requiresTunnel waxay CONNECT u isticmaashaa bartilmaameedyo ammaan ah iyo waddooyinka borotokool ee aan waafaqsanayn.
Tani maahan hab lagu tirtiro CONNECT tunnel HTTPS caadi ah. Hayso scheme-ka bartilmaameedka oo sax ah.
Isticmaal addProxy API-ga Jetty ee la sheegay. getProxies wuxuu soo celiyaa liis aan la beddeli karin, sidaas darteed qaabkii hore getProxies().add(...) maahan interface-ka beddelka ee hadda.
Bartilmaameedyada HTTP ee dadweynaha ee ku yaal waddo proxy dadweyne oo la ogolaaday, liiska proxy HTTP wuxuu bixiyaa musharrixiin loogu talagalay host iyo port-ka proxy Jetty. Akhri jawaabta dhabta ah ee proxy markaad is barbar dhigayso isku-xirka. Aqoonsiga, siyaasadda bartilmaameedka iyo bartilmaameed aan la heli karin ayaa ka duwan yihiin doorashada HTTP la gudbiyay ama CONNECT.