JavaEEでリクエストのHTTPヘッダに値を付加する
タイトルの通りなんですが、いまやってるプロジェクトでJavaEEでリクエストのHTTPヘッダに値を付加して持ち回る必要が出てきていまして、その方法を模索中です。
とりあえず色々ググってたどり着いた案は、今のところ以下のような感じ。
- サーブレットだと、#setHeader() 出来るのはレスポンスの方だけで、リクエストの方は #getHerader() しかできない模様
- HtteServletRequestWrapperを使って、#getHeader() された時の振る舞いをオーバーライドする
こんな感じで、ラッピングしたHttpRequestの方で新しくマップでHTTPヘッダを保持しておくってのはどうだろう。
ところでそもそもブラウザだとリクエストの時にHTTPヘッダっていじれないんですよね?まだあまり調べ切れてないけれど、簡単には出来なそうな感じでした。
ブラウザ経由なら普通にリクエストヘッダじゃなくてリクエストボディにデータを載せてポストしなきゃいかんのかなぁ。
HTTPクライアントを自分で書いちゃうような場合なら全然楽なんですけどね。
この方法で良いのかよく分からないけど、もっと良い方法があるんじゃない?っていう情報は大歓迎です!
追記
ブクマコメントで幾つかコメントをいただいていたようなので少し追記です。
- なるべくセッションは使いたくないとのプロジェクトの方針なので難しいのですが、クッキーは今の所禁止はされていないようなので、HTTPヘッダにセットした値を持ち回るためにクッキーを利用するかもしれません。
- HTTPヘッダに値をセット(TestRequestに追加したメソッド #setHeader()にて) するのは、filter のつもりでいます。
- 想定はイントラだけではないので、セキュリティも慎重に考えないと危ないです。
うーん、想定しなきゃならんことが山積みですな。