Апрацоўнік 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 у пазначаным API Jetty. getProxies вяртае нязменны спіс, таму стары рэцэпт getProxies().add(...) не з'яўляецца яго бягучым інтэрфейсам змянення.

Для публічных HTTP-мэт на дазволеным публічным праксі-маршруце спіс HTTP-праксі прапануе кандыдатаў для хоста і порта праксі Jetty. Чытайце фактычны адказ праксі пры параўнанні канэктараў. Аўтэнтыфікацыя, палітыка мэты і недаступная мэта застаюцца асобнымі ад выбару перанакіраванага HTTP ці CONNECT.

Падобныя артыкулы