为什么apache camel会过滤出HTTP标头

时间:2016-04-22 04:39:39

标签: http-headers apache-camel cache-control pragma

我正在浏览此链接: https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Fuse/6.0/html/Web_Services_and_Routing_with_Camel_CXF/files/Proxying-Headers.html

它指出,在使用基于HTTP或HTTP的组件构建桥接应用程序时,通常需要删除或过滤掉路径中的某些标题或标题类,以确保应用程序按预期运行。同样在org.apache.camel.component.netty4.http.NettyHttpHeaderFilterStrategy中,可以看到许多标题被过滤掉如下:

protected void initialize() {
    getOutFilter().add("content-length");
    getOutFilter().add("content-type");
    getOutFilter().add("host");
    // Add the filter for the Generic Message header
    // http://www.w3.org/Protocols/rfc2616/rfc2616-sec4.html#sec4.5
    getOutFilter().add("cache-control");
    getOutFilter().add("connection");
    getOutFilter().add("date");
    getOutFilter().add("pragma");
    getOutFilter().add("trailer");
    getOutFilter().add("transfer-encoding");
    getOutFilter().add("upgrade");
    getOutFilter().add("via");
    getOutFilter().add("warning");

}

我知道我们可以通过实现自己的过滤策略来覆盖这种行为。但阻止标题的原因是什么?例如,如果我不阻止缓存控制或编译指示标头,它会导致哪些副作用?

1 个答案:

答案 0 :(得分:0)

据我记得你引用的标题过滤器是白名单,而不是黑名单。即它将通过所有列出的(http相关的)标题,但删除在您的路线中旅行时可能已添加到您的交易所的所有其他标题。通常,您希望删除这些额外的标头,这样它们就不会使bean溢出系统内部。