Spring WebClient ma' Jetty: Proxying HTTP Semplici Mingħajr CONNECT
Uża l-konnettur Jetty ta' Spring bi protokolli HTTP/1.1 tal-klijent u tal-proxy li jaqblu meta tkun meħtieġa talba HTTP mgħoddija ordinarja.
Il-handler tal-proxy HTTP ta' Reactor Netty jistabbilixxi mina CONNECT anki għal destinazzjoni HTTP sempliċi. Jekk il-proxy maħsub jaċċetta mgħoddi HTTP/1.1 ordinarju, Spring WebClient jista' juża konnettur ieħor appoġġjat.
Għal Spring 6.2 bl-API tal-klijent ta' Jetty 12.0.35 u integrazzjoni Jetty Reactive Streams kompatibbli:
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 u JettyClientHttpConnector huma klassijiet Spring. Immaniġġja l-bidu u l-għeluq tal-klijent Jetty forniti permezz taċ-ċiklu tal-ħajja normali tal-applikazzjoni.
Il-proxy HTTP/1.1 ta' Jetty jista' jgħaddi talba HTTP/1.1 ordinarja mingħajr mina meta l-protokolli tad-destinazzjoni u tal-proxy tal-klijent jaqblu. Il-politika requiresTunnel tiegħu tuża CONNECT għal destinazzjonijiet siguri u għal mogħdijiet ta' protokoll inkompatibbli.
Dan mhuwiex mod kif tneħħi CONNECT minn mina HTTPS ordinarja. Żomm l-iskema tad-destinazzjoni korretta.
Uża addProxy fl-API Jetty msemmija. getProxies jirritorna lista li ma tistax tinbidel, għalhekk ir-riċetta l-qadima getProxies().add(...) mhijiex l-interface attwali ta' modifika tiegħu.
Għal destinazzjonijiet HTTP pubbliċi fuq rotta tal-proxy pubblika permessa, il-lista tal-proxy HTTP tforni kandidati għall-host u l-port tal-proxy Jetty. Aqra r-rispons attwali tal-proxy meta tqabbel konnetturi. L-awtentikazzjoni, il-politika tad-destinazzjoni u destinazzjoni mhux disponibbli jibqgħu separati milli tagħżel HTTP mgħoddi jew CONNECT.