0

カスタムヘッダーをほとんど設定せず、リバースプロキシとして機能するラクダルートがあります。Apache Camelはすべてのリクエストヘッダーをレスポンスにコピーします

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 

しかし、私がラクダの迂回をスキップしたとき、応答にはWebエージェントヘッダーがありませんでした。だから私は、ラクダ/サーブレットのコンポーネントがリクエストヘッダをレスポンスにコピーすると考えています。私はループ内の自分のコードからの応答にリクエストヘッダーをコピーしていないことに注意してください。これについていくつか光を当ててください。

UPDATEラクダサーブレット1として

documentation

キャメルHTTPコンポーネントと同じメッセージヘッダーを適用します。 Camel は、すべてのrequest.parameterとrequest.headersも入力します。クライアント要求は、URLがある場合 たとえば、 http://myserver/myserver?orderid=123、交換は値123

と受注という名前 ヘッダーが含まれていますこれは、サーブレット・コンポーネントが応答するすべてのリクエストヘッダをコピーするということですか?どうすればそれを無効にするのですか?

答えて

1

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

0

転送URLに「copyHeaders = false」を追加できます

関連する問題