我有一条骆驼路线,它设置了一些自定义标头并充当反向代理。
from("servlet:///listen/path?matchOnUriPrefix=true")
.setHeader(Exchange.HTTP_RESPONSE_CODE, simple("200"))
.setHeader("MY_HEADER", simple("MY_VALUE"))
.to("some endpont");
对应用服务器的请求是通过 Web 代理传递的,并且 Web 代理会为请求设置一些标头。这些标头包含一些敏感信息。但是看起来骆驼溃败将所有请求标头作为响应标头复制到响应中,因此网络代理设置的敏感信息在浏览器端可用。
Browser Web agent
+--+ Camel Route
| | +----------+ +------------+
| +-------> | Sets some|-------------> | |
| | | headers | | |
| | <-------| to request <-------------+ |
| | | | | |
| | +----------+ +------------+
| |
+--+
Response headers
having web-agent
headers
但是,当我跳过骆驼溃败时,响应没有网络代理标头。所以我怀疑camel/servelet组件复制请求头来响应。请注意,我没有复制任何请求标头来响应我在 roue 中的代码。请对此有所了解。
更新
根据骆驼servlet文档
Camel 将应用与 HTTP 组件相同的消息头。Camel 还将填充所有 request.parameter 和 request.headers。例如,如果客户端请求的 URL 为 http://myserver/myserver?orderid=123,则交换将包含一个名为 orderid 的标头,其值为 123。
这是否意味着 servlet 组件将所有请求标头复制到响应中?如果是这样如何禁用它?