Jetty менен Spring WebClient: 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тин ортосундагы тандоодон өзүнчө калат.