[ 
https://issues.apache.org/jira/browse/CAMEL-9462?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-9462:
-------------------------------
    Assignee: Andrea Cosentino

> 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
>            Assignee: Andrea Cosentino
>             Fix For: 2.17.1, 2.18.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)

Reply via email to