Spring WebClient с прокси-сервером: отсутствуют заголовки HTTP

Я использую Spring WebClient из spring-boot-starter-webflux 2.1.3.RELEASE для проверки уровня анонимности прокси-серверов. После того, как я сделал несколько запросов через WebClient через некоторые прокси-серверы, в моих запросах нет HTTP-заголовков, связанных с прокси. Я скучаю например x-forwarded-for, via, x-proxy-id.. Просто remote-address подвергается

Насколько я понял, клиент netty подключается к прокси через tcp CONNECT для каждого типа прокси (HTTP,SOCKS4/5), и это является причиной отсутствия заголовков.

Вопрос: есть ли способ получить классические HTTP-заголовки прокси с помощью этого подхода или есть другой способ настроить прокси-сервер с WebClient?

Мой пример конфигурации:

HttpClient httpClient = HttpClient.create()
    .tcpConfiguration(tcpClient ->
        tcpClient
            .proxy(proxy -> {                       
                proxy.type(ProxyProvider.Proxy.HTTP).address(new InetSocketAddress(ip, port));})
            .option(ChannelOption.CONNECT_TIMEOUT_MILLIS, 10000)
            .doOnConnected(connection ->
                connection
                    .addHandlerLast(new ReadTimeoutHandler(10000))
                    .addHandlerLast(new WriteTimeoutHandler(10000))));

ReactorClientHttpConnector connector = new ReactorClientHttpConnector(httpClient);

WebClient build = WebClient.builder()
    .baseUrl(baseUrl)
    .clientConnector(connector)
    .build();

0 ответов

Причина отсутствия заголовков - запрос CONNECT, который устанавливает TCP-туннель вместо отправки HTTP-запросов на прокси.

Но, к сожалению, как указано в

https://github.com/netty/netty/issues/8269

а также

https://github.com/spring-projects/spring-framework/issues/21767

базовый клиент netty, который используется веб-клиентом, выдающим запрос CONNECT для каждого типа прокси, и это не будет изменено.

Другие вопросы по тегам