Я использую Apache Camel 2.13.1 в качестве HTTP-прокси с помощью компонента http4:Как настроить исходящий заголовок хоста из Camel http4 прокси
.from("servlet://*?matchOnUriPrefix=true")
.to("http4://example.com/?bridgeEndpoint=true&httpClient.redirectsEnabled=false")
Теперь мне нужно установить параметр заголовка HTTP Host
исходящего прокси-запрос к бэкэнд-системе, поскольку, поскольку он используется прокси-сервером для создания абсолютных ссылок, он должен соответствовать URL-адресу public/frontend. Использование наивного подхода просто установить заголовок Host
в сообщении верблюда .setHeader("Host", "foo.com")
не удается из-за того, что компонент http4 переопределяет это имя хоста прокси-узла example.com.
Дальнейшие исследования показали, что HTTPClient использовал это с помощью параметра virtual-host. Компонент http4 Camel поддерживает параметры pass-through HTTPClient с использованием параметра httpClient
. Однако, поскольку версия 2.13.0, , camel http4 использует HTTPClient 4.3's builder api (http://camel.apache.org/http4.html), чтобы передать параметры httpClient. * Из конфигурации конечной точки, и, к сожалению, построитель HTTPClient 4.3 api больше не включает параметр виртуального хоста. Судя по этому сообщению списка рассылки HTTPClient (https://mail-archives.apache.org/mod_mbox//hc-httpclient-users/201312.mbox/%[email protected]%3E), похоже, что мне может потребоваться установить виртуальный хост, который, как представляется, называется целевым хостом, в HttpClientContext через setTargetHost. Как я могу сделать это через верблюда между ними?
Так, чтобы подвести итог: Я использую компонент http4 верблюда и необходимо изменить значение заголовка Host
HTTP запроса исходящего прокси-сервера.
Я принимая это как ответ, так как документы, как получить доступ к HttpClient внутренностей от верблюда, который должен в конечном итоге приведет к успеху. Однако я не мог заставить его работать сам, потому что конфигурация HttpClient очень сложна, и у меня закончилось время. – BlueDog
Конфигурация HttpClient не помогает вам в этом, вам нужно применить customContext для установки значения Host так, как вы хотите. –
Это разрешило это для меня: http://stackoverflow.com/questions/9499697/configuring-apache-httpclient-to-access-service-through-proxy-load-balancer-ove – jpt