代码如下:  public String getIpAddr(HttpServletRequest request) { 
    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();    
    }    
    return ip;    
}
在本地就可以的,但是上传到服务器 获得的不是真实的IP这就为什么呢?系统中有用户总就刷机,就是不断点击网站,现在想看下是哪里的IP访问的? 

解决方案 »

  1.   


    private String ip(HttpServletRequest req) {
    String ip = head(req, "X-Real-IP");
    if (ip != null && !"unknown".equalsIgnoreCase(ip)) {
    return ip;
    }
    ip = head(req, "X-Forwarded-For");
    if (ip != null && !"unknown".equalsIgnoreCase(ip)) {
    // 多次反向代理后会有多个IP值,第一个为真实IP。
    int index = ip.indexOf(',');
    return (index != -1) ? ip.substring(0, index) : ip;
    } else {
    return req.getRemoteAddr();
    }
    }

    private String head(HttpServletRequest req, String s){
    return req.getHeader(s);
    }看看这个,希望对有用