Göran Erkstam created CAMEL-13880:
-------------------------------------

             Summary: netty4-http component is setting an invalid "host" HTTP 
header
                 Key: CAMEL-13880
                 URL: https://issues.apache.org/jira/browse/CAMEL-13880
             Project: Camel
          Issue Type: Bug
          Components: camel-netty4-http
    Affects Versions: 2.24.0
            Reporter: Göran Erkstam


The netty4-http component is setting an invalid "host" HTTP header when no port 
is defined in the uri for requests.

netty4-http sets the header in DefaultNettyHttpBinding.toNettyRequest where URI 
is used to parse the uri string but URI give -1 if no port is defined. For 
example the host header could be set to "hostname:-1" which is not accepted of 
some proxy servers that check the validity of the host header. For example 
Apache proxy will return a http error 400(Bad request).

See [https://tools.ietf.org/html/rfc7230#section-5.4]

 
{code:java}
// This is how it's done in DefaultNettyHttpBinding.toNettyRequest
URI u = new URI(uri);
String hostHeader = u.getHost() + (u.getPort() == 80 ? "" : ":" + u.getPort());
request.headers().set(HttpHeaderNames.HOST.toString(), hostHeader);
LOG.trace("Host: {}", hostHeader);
{code}
{{}}

One solution could be:
{code:java}
URI u = new URI(uri);
int port = u.getPort();
String hostHeader = u.getHost() + (port == 80 || port ==-1 ? "" : ":" + port);
request.headers().set(HttpHeaderNames.HOST.toString(), hostHeader);
{code}



--
This message was sent by Atlassian Jira
(v8.3.2#803003)

Reply via email to