Reactor Nettyn HTTP-välityspalvelimen käsittelijä muodostaa CONNECT-tunnelin myös tavalliselle HTTP-kohteelle. Jos aiottu välityspalvelin hyväksyy sen sijaan tavallisen HTTP/1.1-edelleenvälityksen, Spring WebClient voi käyttää toista tuettua liitintä.

Spring 6.2:lle Jetty 12.0.35:n asiakas-API:n ja yhteensopivan Jetty Reactive Streams -integroinnin kanssa:

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 ja JettyClientHttpConnector ovat Springin luokkia. Hallitse annetun Jetty-asiakkaan käynnistys ja pysäytys sovelluksen tavallisen elinkaaren kautta.

Jettyn HTTP/1.1-välityspalvelin voi välittää tavallisen HTTP/1.1-pyynnön ilman tunnelia, kun kohteen ja asiakas-välityspalvelimen protokollat vastaavat toisiaan. Sen requiresTunnel-käytäntö käyttää CONNECTia suojattuihin kohteisiin ja yhteensopimattomiin protokollapolkuihin.

Tämä ei ole tapa poistaa CONNECT tavallisesta HTTPS-tunnelista. Pidä kohteen skeema oikeana.

Käytä addProxy-metodia mainitussa Jetty-API:ssa. getProxies palauttaa muuttumattoman listan, joten vanhempi getProxies().add(...) -resepti ei ole sen nykyinen muokkausrajapinta.

Julkisille HTTP-kohteille sallitulla julkisella välityspalvelinreitillä HTTP-välityspalvelinluettelo tarjoaa ehdokkaita Jettyn välityspalvelimen isäntää ja porttia varten. Lue välityspalvelimen todellinen vastaus, kun vertailet liittimiä. Todennus, kohdekäytäntö ja tavoittamaton kohde pysyvät erillään valinnasta edelleen välitetyn HTTP:n ja CONNECTin välillä.

Aiheeseen liittyvät artikkelit