HTTP proxy obrađivač Reactor Nettyja uspostavlja CONNECT tunel čak i za obično HTTP odredište. Ako predviđeni proxy umjesto toga prihvaća obično HTTP/1.1 prosljeđivanje, Spring WebClient može koristiti drugi podržani konektor.

Za Spring 6.2 s klijentskim API-jem Jetty 12.0.35 i kompatibilnom integracijom 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 i JettyClientHttpConnector su Spring klase. Upravljajte pokretanjem i zaustavljanjem isporučenog Jetty klijenta kroz uobičajeni životni ciklus aplikacije.

Jetty HTTP/1.1 proxy može proslijediti običan HTTP/1.1 zahtjev bez tunela kada se protokoli odredišta i klijenta-proxyja podudaraju. Njegova requiresTunnel politika koristi CONNECT za sigurna odredišta i za nekompatibilne protokolarne putanje.

Ovo nije način da se CONNECT ukloni iz običnog HTTPS tunela. Održavajte šemu odredišta ispravnom.

Koristite addProxy u navedenom Jetty API-ju. getProxies vraća nepromjenjivu listu, pa stariji recept getProxies().add(...) nije njegov trenutni interfejs za izmjenu.

Za javna HTTP odredišta na dozvoljenoj javnoj proxy ruti, lista HTTP proxyja daje kandidate za Jettyjev proxy host i port. Pročitajte stvarni odgovor proxyja kada upoređujete konektore. Autentifikacija, politika odredišta i nedostupno odredište ostaju odvojeni od izbora proslijeđenog HTTP-a ili CONNECT-a.

Povezani članci