gpt4 book ai didi

java - Apache Camel 将所有请求 header 复制到响应

转载 作者:行者123 更新时间:2023-12-05 06:42:17 24 4
gpt4 key购买 nike

我有一个 Camel 路线,它设置了很少的自定义 header 并充当反向代理。

from("servlet:///listen/path?matchOnUriPrefix=true")
.setHeader(Exchange.HTTP_RESPONSE_CODE, simple("200"))
.setHeader("MY_HEADER", simple("MY_VALUE"))
.to("some endpont");

对应用程序服务器的请求通过网络代理传递,网络代理为请求设置一些 header 。这些 header 包含一些敏感信息。然而,看起来 Camel 溃败将所有请求 header 复制为响应 header 作为响应 header ,因此网络代理设置的敏感信息在浏览器端可用。

Browser         Web agent

+--+ Camel Route
| | +----------+ +------------+
| +-------> | Sets some|-------------> | |
| | | headers | | |
| | <-------| to request <-------------+ |
| | | | | |
| | +----------+ +------------+
| |
+--+
Response headers
having web-agent
headers

然而,当我跳过 Camel 溃败时,响应没有网络代理 header 。所以我怀疑 camel/servelet 组件将请求 header 复制到响应中。请注意,我没有复制任何请求 header 以响应我在 roue 中的代码。请阐明这一点。

更新

根据 Camel servlet documentation

Camel will apply the same Message Headers as the HTTP component. Camel will also populate all request.parameter and request.headers. For example, if a client request has the URL, http://myserver/myserver?orderid=123, the exchange will contain a header named orderid with the value 123.

这是否意味着 servlet 组件将所有请求 header 复制到响应中?如果是这样如何禁用它?

最佳答案

您想在发送前删除 header 吗?为什么不使用 .removeHeaders() 从请求消息中删除传入 header 。您当然可以为该语句提供一个模式,以便您删除特定的标题。至少通过这种方式,您可以确保这些 header 不会传递到响应消息。

关于java - Apache Camel 将所有请求 header 复制到响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37481763/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com