Gert Vanthienen created CAMEL-9442:
--------------------------------------
Summary: URI gets decoded when bridging from netty-http to http4
Key: CAMEL-9442
URL: https://issues.apache.org/jira/browse/CAMEL-9442
Project: Camel
Issue Type: Bug
Components: camel-http-common, camel-http4
Affects Versions: 2.17.0
Reporter: Gert Vanthienen
Assignee: Gert Vanthienen
Fix For: 2.15.6, 2.16.2, 2.17.0
When using a route like this one (to forward an HTTP request to a downstream
server) using the {{netty-http}} component, the query is decoded when sent to
the downstream server:
{noformat}
from("netty-http:http://localhost:9000/service?matchOnUriPrefix=true")
.to ("http4://downstream:9000/service?bridgeEndpoint=true");
{noformat}
A request to {{http://localhost:9000/service?q=%3B}} will result in a call to
{{http://downstream:9000/service?q=;}} (notice the decoded {{;}} character).
Replacing the {{netty-http:http:}} endpoint with a {{jetty:http:}} endpoint
fixes the problem.
The difference is in the use of the {{Exchange.HTTP_QUERY}} and
{{Exchange.HTTP_RAW_QUERY}} headers. The {{jetty:http:}} endpoint is only
setting the former header (containing the raw header value), while the
{{netty-http:http:}} endpoint is using both headers.
When using {{bridgeEndpoint}}, the {{http4}} component should prefer the raw
query header over the decoded header if both headers are available.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)