2

いくつかのカスタム ヘッダーを設定し、リバース プロキシとして機能するキャメル ルートがあります。

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

アプリ サーバーへのリクエストは Web エージェントを介して渡され、Web エージェントはいくつかのヘッダーをリクエストに設定します。これらのヘッダーには、機密情報が含まれています。ただし、キャメル ルートはすべてのリクエスト ヘッダーをレスポンス ヘッダーとしてレスポンスにコピーするように見えます。その結果、Web エージェンによって設定された機密情報がブラウザ エンドで利用可能になります。

Browser         Web agent

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

ただし、キャメル ルートをスキップすると、応答に Web エージェント ヘッダーがありませんでした。そのため、キャメル/サーブレット コンポーネントがリクエスト ヘッダーをレスポンスにコピーしていると思われます。roue 内のコードからの応答に要求ヘッダーをコピーしていないことに注意してください。これに光を当ててください。

アップデート

camelサーブレットのドキュメントに従って

Camel は、HTTP コンポーネントと同じメッセージ ヘッダーを適用します。Camel はすべての request.parameter と request.headers にも入力します。たとえば、クライアント リクエストの URL が http://myserver/myserver?orderid=123の場合、交換には、値が 123 の orderid という名前のヘッダーが含まれます。

これは、サーブレット コンポーネントがすべての要求ヘッダーを応答にコピーすることを意味しますか? もしそうなら、それを無効にする方法は?

4

2 に答える 2

1

送信する前にヘッダーを削除しますか? を使用して、リクエスト メッセージから着信ヘッダーを削除してみませんか。removeHeaders(). もちろん、そのステートメントにパターンを指定して、特定のヘッダーを削除することもできます。少なくともこの方法で、これらのヘッダーが応答メッセージに渡されないようにすることができます。

于 2016-05-28T15:56:32.000 に答える