HTTP посреднички руковалац у Reactor Netty успоставља CONNECT тунел чак и за обично HTTP одредиште. Ако предвиђени посредник прихвата обично HTTP/1.1 прослеђивање, Spring WebClient може користити други подржани конектор.

За Spring 6.2 са клијентским API-јем Jetty 12.0.35 и компатибилном 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 и JettyClientHttpConnector су Spring класе. Управљајте покретањем и заустављањем испорученог Jetty клијента кроз уобичајени животни циклус апликације.

HTTP/1.1 посредник у Jetty може проследити обичан HTTP/1.1 захтев без тунела када се протоколи одредишта и клијентског посредника поклапају. Његова requiresTunnel политика користи CONNECT за безбедна одредишта и за некомпатибилне путање протокола.

Ово није начин да се CONNECT уклони из обичног HTTPS тунела. Задржите исправну шему одредишта.

Користите addProxy у наведеном Jetty API-ју. getProxies враћа листу која се не може мењати, па стари рецепт getProxies().add(...) није његов тренутни интерфејс за измене.

За јавна HTTP одредишта на дозвољеној јавној посредничкој рути, листа HTTP посредника даје кандидате за host и port Jetty посредника. Читајте стварни одговор посредника када упоређујете конекторе. Аутентификација, политика одредишта и недоступно одредиште остају одвојени од избора прослеђеног HTTP или CONNECT.

Повезани чланци