I have been working on an issue where HttpServletRequest.getHostName() always return the IP address, instead of the host name.
The Tomcat 5.5 and Tomcat 6 documentation states enableLookups is set to true by default.
enableLookups
Set to true if you want calls to request.getRemoteHost() to perform DNS lookups in order to return the actual host name of the remote client. Set to false to skip the DNS lookup and return the IP address in String form instead (thereby improving performance). By default, DNS lookups are enabled.
http://tomcat.apache.org/tomcat-5.5-doc/config/http.html
http://tomcat.apache.org/tomcat-6.0-doc/config/http.html
Interestingly enough, when we were on Tomcat 5.5 the reverse look-ups for HttpServletRequest.getHostName() worked fine. This seems to be an issue with the documentation for Tomcat 6. Luckily there is an easy solution.
Searching a little more, this seems to also be the same issue as reported in Tomcat 4:
https://issues.apache.org/bugzilla/show_bug.cgi?id=21621
But in the documentation for tomcat 4, the default is false so the assumption is correct.
Set to true if you want calls to request.getRemoteHost() to perform DNS lookups in order to return the actual host name of the remote client. Set to false to skip the DNS lookup and return the IP address in String form instead (thereby improving performance). By default, DNS lookups are disabled.
So the documentation for Tomcat 5+ changed and the functionality did not change.
Solution
To solve this issue, in server.xml I added enableLookups=”true” to the connector like this
Next steps will be to validate this on Tomcat 7.
Recent Comments