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,如果使用了代理不太好检测出来
------解决方案--------------------
登录,根据username来记录投票状态。
------解决方案--------------------
String ip = request.getHeader("X-Forwarded-For");这些都是出口ip,客户端的真实ip是拿不到的。http请求不支持,希望html6支持吧。而这种方法对于代理,是没有办法获取的!!如果你想获取的话,可以通过浏览器控件(插件),或者是flash获取。
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(); }