Spring WebClient ба Jetty: CONNECTгүй энгийн HTTP прокси
Энгийн дамжуулсан HTTP хүсэлт шаардлагатай үед Spring-ийн Jetty холбогчийг тохирох HTTP/1.1 клиент болон прокси протоколтой хамт ашиглана.
Reactor Netty-ийн HTTP прокси зохицуулагч энгийн HTTP очих газарт ч CONNECT туннель үүсгэдэг. Хэрэв зориулалтын прокси энгийн HTTP/1.1 дамжуулалтыг хүлээж авбал Spring WebClient өөр дэмжигдсэн холбогч ашиглаж болно.
Spring 6.2, Jetty 12.0.35-ын клиент API болон нийцтэй Jetty Reactive Streams интеграцид:
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 болон JettyClientHttpConnector нь Spring-ийн классууд юм. Өгөгдсөн Jetty клиентийн эхлүүлэлт ба зогсолтыг програмын ердийн амьдралын мөчлөгөөр удирдана.
Очих газар болон клиент-прокси протоколууд тохирох үед Jetty-ийн HTTP/1.1 прокси энгийн HTTP/1.1 хүсэлтийг туннельгүйгээр дамжуулж чадна. Түүний requiresTunnel бодлого нь аюулгүй очих газрууд болон нийцэхгүй протоколын замд CONNECT ашигладаг.
Энэ нь энгийн HTTPS туннелиас CONNECT-ыг хасах арга биш юм. Очих газрын схемыг зөв байлгана.
Дурдсан Jetty API-д addProxy ашиглана. getProxies өөрчлөх боломжгүй жагсаалт буцаадаг тул хуучин getProxies().add(...) жор нь түүний одоогийн өөрчлөлтийн интерфейс биш юм.
Зөвшөөрөгдсөн нийтийн прокси зам дахь нийтийн HTTP очих газруудад HTTP прокси жагсаалт нь Jetty проксийн хост болон портод нэр дэвшигчдийг нийлүүлдэг. Холбогчдыг харьцуулахдаа бодит прокси хариуг уншина. Баталгаажуулалт, очих газрын бодлого болон хүрэхгүй очих газар нь дамжуулсан HTTP эсвэл CONNECT-ыг сонгохоос тусдаа хэвээр байна.