A Reactor Netty HTTP-proxy kezelője még egyszerű HTTP-cél esetén is CONNECT-alagutat hoz létre. Ha a szándékolt proxy inkább közönséges HTTP/1.1-továbbítást fogad el, a Spring WebClient más támogatott összekötőt is használhat.

A Spring 6.2-höz a Jetty 12.0.35 ügyfél-API-jával és kompatibilis Jetty Reactive Streams-integrációval:

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();

A WebClient és a JettyClientHttpConnector Spring-osztályok. A mellékelt Jetty-ügyfél indítását és leállítását az alkalmazás szokásos életciklusán keresztül kezelje.

A Jetty HTTP/1.1-proxyja alagút nélkül továbbíthat egy közönséges HTTP/1.1-kérést, ha a cél és az ügyfél-proxy protokollja megegyezik. A requiresTunnel szabályzata CONNECT-et használ a biztonságos célokhoz és az inkompatibilis protokollútvonalakhoz.

Ez nem módja annak, hogy eltávolítsuk a CONNECT-et egy közönséges HTTPS-alagútból. Tartsa helyesen a cél sémáját.

Használja az addProxy-t a megadott Jetty API-ban. A getProxies módosíthatatlan listát ad vissza, ezért a régebbi getProxies().add(...) recept nem a jelenlegi módosítási felület.

A nyilvános HTTP-célokhoz engedélyezett nyilvános proxy-útvonalon a HTTP-proxylista jelölteket kínál a Jetty proxy-gazdagépéhez és portjához. Hasonlítsa össze az összekötőket a tényleges proxyválasz olvasásával. A hitelesítés, a célszabályzat és az elérhetetlen cél továbbra is elkülönül a továbbított HTTP és a CONNECT közötti választástól.

Kapcsolódó cikkek