blob: be9f6b41994483ec4b64e2ed02e4d224c624db62 [file] [log] [blame]
[[Howtoavoidsendingsomeorallmessageheaders-Howtoavoidsendingsomeorallmessageheaders]]
=== How to avoid sending some or all message headers?
When I send a message to a Camel endpoint such as the
<<mail-component,Mail>> component, then the mail include some message
headers I do not want. How can I avoid this?
[[Howtoavoidsendingsomeorallmessageheaders-UseremoveHeadersintheroute]]
==== Use removeHeaders in the route
This is a gotcha more people encounter. However it's very easy to solve.
To remove all headers use a wildcard expression:
[source,java]
----
from(...).removeHeaders("*").to("smtp://....")
----
Similarly to remove all headers except some of your own (`myheader1` and
`myheader2`) use a wildcard with a vararg:
[source,java]
----
from(...).removeHeaders("*", "myheader1", "myheader2").to("smtp://....")
----
To do (a similar thing) in XML DSL you simply do:
[source,xml]
----
<route>
<from uri="..."/>
<removeHeaders pattern="*" excludePattern="header1|header2"/>
<to uri="smtp://..."/>
</route>
----
At present, the `excludePattern` only supports one header name (which
can be include wild cards or regular expressions). We tackle this
limitation with
https://issues.apache.org/jira/browse/CAMEL-6445[CAMEL-6445].
Again to remove only Camel headers but no other transport headers:
[source,java]
----
from(...).removeHeaders("Camel*").to("smtp://....")
----
To do this in XML DSL you simply do:
[source,xml]
----
<route>
<from uri="..."/>
<removeHeaders pattern="Camel*"/>
<to uri="smtp://..."/>
</route>
----
There is also a removeHeader in the DSL to remove a single header. But
it does not support patterns, so you can only remove a single header by
its name.
[[Howtoavoidsendingsomeorallmessageheaders-UseHeaderFilterStrategy]]
==== Use HeaderFilterStrategy
An alternative is that some of the Camel
link:../component.adoc[Components] supports configuring a custom header
filter strategy.
This allows you to implement the
`org.apache.camel.spi.HeaderFilterStrategy` interface, where you can
filter unwanted headers.
Though it's often easier to use the `removeHeaders` in the Camel route as
shown above.