当前位置: 代码迷 >> Java Web开发 >> 从JSP中得到访问者的真实IP(很急)!解决方案
  详细解决方案

从JSP中得到访问者的真实IP(很急)!解决方案

热度:1848   发布时间:2013-02-25 21:18:54
从JSP中得到访问者的真实IP(很急)!
现在手头开发一个网站,有这么一个功能,就是根据访问者的IP自动显示访问者所在的区域; 
现在遇到了一问题,我得到客户端IP的代码如下: 

Java code
public String getIpAddr(HttpServletRequest request) {    String ip = request.getHeader("x-forwarded-for");    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)                   || "null".equalsIgnoreCase(ip))    {        ip = request.getHeader("Proxy-Client-IP");    }    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)                   || "null".equalsIgnoreCase(ip)) {        ip = request.getHeader("WL-Proxy-Client-IP");    }    if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)                   || "null".equalsIgnoreCase(ip)) {        ip = request.getRemoteAddr();    }    return ip;}


该代码得到的结果如下:
1.如果应用发布到局域网,在局域网内访问,得到的是我局域网的IP,如: 192.168.0.2
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段

我现在就是想在第二种情况下能够得到访问者的外网ip,请问各位有什么高招?

------解决方案--------------------------------------------------------

------解决方案--------------------------------------------------------
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的
------解决方案--------------------------------------------------------
探讨

2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的

------解决方案--------------------------------------------------------
request.getRemote()获取到的IP是什么IP,汗一个,还真的没注意过
------解决方案--------------------------------------------------------
你提的这个要求貌似很难.
------解决方案--------------------------------------------------------
探讨
2.如果我将应用发布到独立IP的外网服务器上面,在任何地方访问,得到的IP总是 192.168.198.1,这一类局域网的IP段


这个是因为你的服务器还不是直接在外网上,应该是服务器还有前置的路由,是路由做了地址映射后才访问到你机器的


这个不清楚你用什么路由转发的,像Windows都会有配置要求传递真实的IP的

------解决方案--------------------------------------------------------
关注中..................
------解决方案--------------------------------------------------------
request.getRemoteAddr() 方法即可以得到访问者的IP
------解决方案--------------------------------------------------------
request.getRemoteAddr()
就可以啊
------解决方案--------------------------------------------------------
request.getRemoteAddr() 这个够强悍...

干嘛要写那么一大堆 楼主你不累?
  相关解决方案