据我所知,入站REST路径参数会自动映射到Camel标头。问题我怀疑这个机制可能会被利用,覆盖路由工作可能需要的Camel头(比如出站CXFRS端点的Host
头,举一个例子),或者至少与它们发生冲突
为什么Camel不能完全独立于Camel头部处理请求的REST路径参数,在许多情况下,这些参数对于正确的Camel组件行为是绝对必需的?如何使用相同的名称避免两者之间的冲突,或者在最坏的情况下避免这成为安全问题?
答案 0 :(得分:0)
我在这里回答您的问题,为什么骆驼为什么应该将http标头视为骆驼标头并转发其余请求。
解决此问题的方法是,在“处理器”中,使用带有模式INOUT的现有Exhange(0-原始交换)句柄创建一个交换(1)。
获得响应后,您将重新使用交换(OUT -3中的响应交换)并重新设置为Exchange(0)。
class customProcessor implements Processor {
void process(Exchange ogx){
Exchange exchange = ExchangeBuilder.anExchange(camelContext)
.withPattern(ExchangePattern...)
.withHeader(Exchange.HTTP_METHOD, HttpMethod.GET)
.build();
Exchange responseExchange=producer.send("the end point to rest",exchange);
//copying the exchange which has come as response from the rest to the body of //the OGX exchange.
ogx.getIn().setBody(responseExchange.getOut().getBody())
}
}