rest - header 中的 Camel REST 路径参数 - 安全问题?

标签 rest apache-camel

我知道入站 REST 路径参数会自动映射到 Camel header 。我怀疑这个机制可能会被利用,覆盖路由工作可能需要的 Camel header (例如出站 CXFRS 端点的 Host header ,举个例子),或者至少与它们发生冲突。

为什么 Camel 不完全独立于 Camel header 处理请求的 REST 路径参数,在许多情况下,Camel header 是正确的 Camel 组件行为所必需的?如何避免使用相同名称的两者之间发生冲突,或者在最坏的情况下避免这成为安全问题?

最佳答案

我在这里回答您的问题,因为为什么 Camel 应该将 http header 视为 Camel header 并转发请求休息。

要解决此问题,您可以做的是,在 Processor 中,使用 Pattern INOUT 使用现有的 Exhange(0 - 原始交换) 句柄创建交换 (1)。

一旦你得到响应,你就重用交换(OUT -3 中的响应交换)并设置回交换(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())


    }

    }

关于rest - header 中的 Camel REST 路径参数 - 安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47159464/

相关文章:

ios - Netsuite 有 RESTful API 吗?

java - 使用 ZipOutPutStream Java 压缩(zip)文件列表

java - 无法从 Java 中的 CXF REST Web 服务读取或解析纯字符串响应

apache-camel - Camel : How to increment the value of an Integer header by a set amount

jms - Camel jms 到外部 activeMQ 的请求-回复给出 javax.jms.InvalidDestinationException : Cannot publish to a deleted Destination:

java - 如何使用 Apache Camel、java DSL、eclipse 更改 XML 文件的内容

ruby-on-rails - 留下未使用的 REST 操作不好吗?

java - Spring 休息: Request method 'GET' not supported

apache-camel - Camel Poll Enrich 显然忽略了 ftp 组件的 Batch Consumer 行为

java - 从处理器内部设置 Camel 交换属性