- PR -

ServletでHTTP_X_FORWARDED_FORを取得

1
投稿者投稿内容
sakaya
会議室デビュー日: 2004/08/01
投稿数: 2
お住まい・勤務地: 東京
投稿日時: 2004-08-01 03:22
はじめまして。sakayaと申します。

ProxyPass経由でアクセスされているapache2+tomcat5+JK2
において、tomcat5上でremote_hostの生IPを取得したい
と思っています。

apache2上ではREMOTE_HOSTにproxyのIPが入ってしまって
いますが、HTTP_X_FORWARDED_FORには生IPが入っている
のでtomcat5上でこれが取得できれば良いのですが、
何か方法はありますでしょうか。

#REMOTE_HOSTを強引にHTTP_X_FORWARDED_FORで
#rewriteしてでも取得できれば嬉しいのです。

また可能ならばこのHTTP_X_FORWARDED_FORも含めて、
proxyがapache2に渡してくる環境変数をjk2経由の
tomcat5ですべて取得する方法はありますでしょうか。

#取得できれば多少スマートでなくても良いです。

参考になるHPやサンプルソースがありましたらどうぞ
よろしくご教授お願いします。
meltingpot
常連さん
会議室デビュー日: 2004/06/15
投稿数: 24
投稿日時: 2004-08-01 04:15
リクエストに情報が渡ってきているなら、HttpServletRequest.getParameter(String)で取得できるのではないでしょうか。
taro
ぬし
会議室デビュー日: 2003/10/20
投稿数: 316
投稿日時: 2004-08-01 06:05
手元の環境では確認できなかったのですが、HttpServletRequest.getHeader(String)ではないでしょうか?
sakaya
会議室デビュー日: 2004/08/01
投稿数: 2
お住まい・勤務地: 東京
投稿日時: 2004-08-01 14:07
返答ありがとうございます。

私の環境ではgetHeader(String),getParameter(String)(やgetAttribute(String))ではHTTP_X_FORWARDED_FORどころかREMOTE_HOST,REMOTE_ADDRも取得できない(後者2つはproxyの値であればそれぞれのgetterで取れます)みたいなんです。

…と思っていたらgetHeaderNames()にX-Forwarded-Forというのが入っていてこれがHTTP_X_FORWARDED_FORに対応するようです。お手数をお掛けしました。

とはいえ、apache2で取れる他のものもそのまま取れると嬉しいので、引き続きご存知の方がいらっしゃいましたらご教授頂けると幸いです。

どうぞよろしくお願いします。

1

スキルアップ/キャリアアップ(JOB@IT)