Program obsługi proxy HTTP w Reactor Netty ustanawia tunel CONNECT nawet dla zwykłego celu HTTP. Jeśli zamierzone proxy akceptuje zwykłe przekazywanie HTTP/1.1, Spring WebClient może użyć innego obsługiwanego łącznika.

Dla Spring 6.2 z API klienta Jetty 12.0.35 i zgodną integracją 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 to klasy Springa. Zarządzaj uruchamianiem i zatrzymywaniem dostarczonego klienta Jetty przez normalny cykl życia aplikacji.

Proxy HTTP/1.1 w Jetty może przekazać zwykłe żądanie HTTP/1.1 bez tunelu, gdy protokoły celu i proxy klienta są zgodne. Polityka requiresTunnel używa CONNECT dla bezpiecznych celów i niezgodnych ścieżek protokołu.

To nie jest sposób na usunięcie CONNECT ze zwykłego tunelu HTTPS. Zachowaj poprawny schemat celu.

Użyj addProxy w podanym API Jetty. getProxies zwraca listę niemodyfikowalną, więc starszy przepis getProxies().add(...) nie jest jego obecnym interfejsem modyfikacji.

Dla publicznych celów HTTP na dozwolonej publicznej trasie proxy lista proxy HTTP dostarcza kandydatów na host i port proxy Jetty. Porównując łączniki, czytaj rzeczywistą odpowiedź proxy. Uwierzytelnianie, polityka celu i niedostępny cel pozostają odrębne od wyboru przekazywanego HTTP lub CONNECT.

Powiązane artykuły