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

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

Attach filesAttach ScreenshotVotersWatch issueWatchersCreate sub-taskLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    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

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment