当前位置: 代码迷 >> Java Web开发 >> java 怎么获得客户端的IP
  详细解决方案

java 怎么获得客户端的IP

热度:81   发布时间:2016-04-16 22:15:51.0
java 如何获得客户端的IP?
String ip = request.getHeader("X-Forwarded-For");  

if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip))
{            ip = request.getHeader("Proxy-Client-IP");        }  
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
{            ip = request.getHeader("WL-Proxy-Client-IP");        }    
if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) 
{            ip = request.getRemoteAddr();        } 
得到ip是 192.168.99.99 
------解决方案--------------------
http是取不到客户端ip的,协议不支持。

X-Forwarded-For头信息里可以取到ip,但是不保证一定会有ip数据,也不保证ip正确,这依赖于客户端的行为
------解决方案--------------------
request.getRemoteAddress(),但是这个不能保证用户的IP一定是真实IP,如果使用了代理不太好检测出来
------解决方案--------------------
引用:
我现在做的是投票,我想根据IP判断,防止重复投票。应该怎么做


登录,根据username来记录投票状态。
------解决方案--------------------
String ip = request.getHeader("X-Forwarded-For");  

if(ip == null 
------解决方案--------------------
 ip.length() == 0 
------解决方案--------------------
 "unknown".equalsIgnoreCase(ip))
{            ip = request.getHeader("Proxy-Client-IP");        }  
if(ip == null 
------解决方案--------------------
 ip.length() == 0 
------解决方案--------------------
 "unknown".equalsIgnoreCase(ip)) 
{            ip = request.getHeader("WL-Proxy-Client-IP");        }    
if(ip == null 
------解决方案--------------------
 ip.length() == 0 
------解决方案--------------------
 "unknown".equalsIgnoreCase(ip)) 
{            ip = request.getRemoteAddr();        } 
  这些都是出口ip,客户端的真实ip是拿不到的。http请求不支持,希望html6支持吧。而这种方法对于代理,是没有办法获取的!!如果你想获取的话,可以通过浏览器控件(插件),或者是flash获取。
  相关解决方案