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 арасындағы таңдаудан бөлек қалады.