Uploaded image for project: 'Camel'
  1. Camel
  2. CAMEL-9442

Query string gets decoded when bridging from netty-http to http4

    Details

    • Estimated Complexity:
      Unknown

      Description

      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:

        from("netty-http:http://localhost:9000/service?matchOnUriPrefix=true")
                .to ("http4://downstream:9000/service?bridgeEndpoint=true");
      

      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.

        Attachments

          Issue Links

            Activity

              People

              • Assignee:
                gertvanthienen Gert Vanthienen
                Reporter:
                gertvanthienen Gert Vanthienen
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: