You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Mirek Borsky <ge...@email.cz> on 2021/08/31 13:54:34 UTC

Camel modifying single item array headers

Greetings,

Camel is modifying my headers representing single item array and I do not now if it is a bug or a feature.

If I sent header with value ["value"] through simple camel proxy, the other end receives the value without the square brackets: "value"

I have reproduced this in karaf 4.3.2 and Camel 3.10.0

This simple camel route is accepting request with header testOutside and adding its own named testInside. Send it to another endpoint which prints the content of those two headers to the body. The testInside header is OK, the testOutside header is stripped of the brackets. Both headers are without brackets when returned to the client.

Route:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
        <route>
            <from uri="jetty:http://0.0.0.0:8000/HeaderTest"/>
            <setHeader name="testInside">
                <constant>["value"]</constant>
            </setHeader>
            <to uri="http://localhost:8000/HeaderTestLog?bridgeEndpoint=true"/>
        </route>
        <route>
            <from uri="jetty:http://0.0.0.0:8000/HeaderTestLog"/>
            <setBody>
                <simple>outside value: ${header.testOutside}\ninside value: ${header.testInside}</simple>
            </setBody>
            <to uri="log:HeaderTestLog?showAll=true"/>
        </route>
    </camelContext>
</blueprint>

Request:

GET http://localhost:8000/HeaderTest HTTP/1.1
Accept-Encoding: gzip,deflate
testOutside: ["value"]
Host: localhost:8000

Response:

HTTP/1.1 200 OK
Accept-Encoding: gzip,deflate
Server: Jetty(9.4.40.v20210413)
testInside: "value"
testOutside: "value"
User-Agent: Apache-HttpClient/4.5.5 (Java/12.0.1)
Transfer-Encoding: chunked

outside value: "value"
inside value: ["value"]



Is there someone who understand what is going on? Can I prevent Camel to modify headers not meant for it? It is not like the array syntax is according to RFC, so I do not think Camel is producing equivalent header form.

Thank you in advance for your time and your answers
kind regards
Miroslav Borský