0

我想在我的 jsp 页面中获取客户端的 IP 地址并希望存储在我的数据库中。

我在 Jsp 页面中使用以下代码来获取 IP 地址,但它显示了服务器 IP 地址。

 <input type="hidden" name="ipaddress" value="<%=request.getRemoteAddr()%>"/> 
4

2 回答 2

9

在通常情况下,方法ServletRequest.getRemoteAddr()(或getRemoteHost()getRemotePort())应该返回实际客户端的详细信息。但是,如果它通过代理或不同的 servlet 引擎路由,您将获得这些机器的 ip。要解决这些情况,您可以尝试以下操作

request.getHeader("VIA")             --> Gateway   
request.getHeader("X-FORWARDED-FOR")--> IPaddress

但如果请求直接来自客户端,这可能会返回 null。您可以通过一些附加条件来处理这种情况以获取有效数据。

于 2012-10-18T16:28:05.890 回答
1

尝试使用request对象从服务器端获取客户端 IP 地址绝不是一种可靠的方法。

最可靠的往往在客户端执行,ActiveX、Applet 或 Javascript 仅举几例。然而,这也带来了一些挑战。检查这个问题的答案,这样你就知道你在反对什么(这是我最喜欢的答案

于 2012-10-18T16:11:10.240 回答