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.

Əlaqəli məqalələr