request#getRequestURL()とかgetServerName()とか
以下は apache1.3系、mod_jk2、Tomcat4.1.31での話。
getRequestURL()とかを呼ぶと
http://hoge.somehost.dn.jxx/context/hoge.jsp
とか帰ってくるけど、このホスト名の生成に関しては
GET /context/hoge.jsp HTTP/1.1 Host: hoge.somehost.dn.jxx
というようなリクエストであれば、Hostの内容を直接返してきている。VirtualHost使わない場合は好きな文字列になってしまうわけだ。
まあ、
GET /context/hoge.jsp HTTP/1.1 Host: some/invalid/form
とかやると ''400 Bad Request''を食らうわけで、悪さはできないと思うけど。
で、Hostヘッダがない要求の場合はというと、mod_jkのおかげ? apacheのhttpd.confのServerNameに、ポート番号をくっつけたものが返ることになる。ポート番号がくっつくのがイケてませんが。
TomcatはgetServerName()で返す値をproxyNameかなにか属性で制御できた気もするので調べてみようかな
かなり原子的な部分ですが...