Jetty ilə Spring WebClient: CONNECT olmadan adi HTTP proksisi
Adi yönləndirilmiş HTTP sorğusu tələb olunduqda Spring-in Jetty konnektorunu uyğun HTTP/1.1 müştəri və proksi protokolları ilə istifadə edin.
Reactor Netty-nin HTTP proksi işləyicisi adi HTTP təyinatı üçün belə CONNECT tuneli qurur. Əgər nəzərdə tutulan proksi əvəzinə adi HTTP/1.1 yönləndirməsini qəbul edirsə, Spring WebClient başqa dəstəklənən konnektordan istifadə edə bilər.
Spring 6.2 üçün Jetty 12.0.35 müştəri API-si və uyğun Jetty Reactive Streams inteqrasiyası ilə:
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 və JettyClientHttpConnector Spring sinifləridir. Verilən Jetty müştərisinin işə salınmasını və dayandırılmasını tətbiqin adi həyat dövrü vasitəsilə idarə edin.
Jetty-nin HTTP/1.1 proksisi hədəf və müştəri-proksi protokolları uyğun gəldikdə adi HTTP/1.1 sorğusunu tunelsiz yönləndirə bilər. Onun requiresTunnel siyasəti təhlükəsiz hədəflər və uyğun olmayan protokol yolları üçün CONNECT istifadə edir.
Bu, adi HTTPS tunelindən CONNECT-i çıxarmaq üsulu deyil. Hədəfin sxemini düzgün saxlayın.
Göstərilən Jetty API-də addProxy istifadə edin. getProxies dəyişdirilə bilməyən siyahı qaytarır, ona görə köhnə getProxies().add(...) resepti cari mutasiya interfeysi deyil.
İcazə verilmiş public-proxy marşrutunda public HTTP hədəfləri üçün HTTP proksi siyahısı Jetty-nin proksi hostu və portu üçün namizədlər təqdim edir. Konnektorları müqayisə edərkən faktiki proksi cavabını oxuyun. Autentifikasiya, hədəf siyasəti və əlçatmaz hədəf yönləndirilmiş HTTP ilə CONNECT seçimindən ayrı qalır.