[
https://issues.apache.org/jira/browse/CAMEL-9462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-9462:
-------------------------------
Fix Version/s: 2.17.0
> HTTP 1.1 Host header be dealt wrongly in proxy & load balancer
> --------------------------------------------------------------
>
> Key: CAMEL-9462
> URL: https://issues.apache.org/jira/browse/CAMEL-9462
> Project: Camel
> Issue Type: Bug
> Components: camel-http, camel-http4
> Affects Versions: 2.9.5, 2.10.3, 2.11.0
> Reporter: Ian Hu
> Fix For: 2.17.0
>
>
> I have wrote code below make camel as a load balancer, but camel-http4(and
> the camel-http, etc) deal the http header Host wrongly, it replace the Host
> header with the host name of the backend of balancer, that make the backend
> generate the wrong link.
>
> {code:title=Main.java|borderStyle=solid}
> import org.apache.camel.impl.DefaultCamelContext;
> import org.apache.camel.model.RouteDefinition;
> public class Main {
> public static void main(String[] args) throws Exception {
> DefaultCamelContext context = new DefaultCamelContext();
> RouteDefinition route = new RouteDefinition();
> route.from("jetty:http://0.0.0.0:8080/?matchOnUriPrefix=true")
> .loadBalance().roundRobin()
>
> .to("http4://127.0.0.1:8081/?bridgeEndpoint=true&throwExceptionOnFailure=false")
>
> .to("http4://127.0.0.1:8082/?bridgeEndpoint=true&throwExceptionOnFailure=false");
> //
> context.addRouteDefinition(route);
> context.start();
> }
> }
> {code}
> I have view the code and found a fix of
> [https://issues.apache.org/jira/browse/CAMEL-5757](See the commit), it's
> commits simply removed the host header
> [https://fisheye6.atlassian.com/browse/camel-git/components/camel-http4/src/main/java/org/apache/camel/component/http4/HttpProducer.java?hb=true#to106].
> and I really do not think it should be dealt like that.
> Some backend will use the Host header to generate link, and when the Host
> header removed and then it be set to the backend's host, the backend got the
> wrong Host, and generate the wrong link.
> I expect the link should be http://localhost:8080/web but it generate
> http://127.0.0.1:8081/web or http://127.0.0.1:8082/web when I view the page
> with the url http://localhost:8080
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)