JAVA取得用户的访问IP地址

来源:互联网 发布:免费黑客网盗号软件 编辑:程序博客网 时间:2024/04/30 03:44

/**

 * 获取访问者IP

 * 

 * 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。

 * 

 * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),

 * 如果还不存在则调用Request .getRemoteAddr()。

 * 

 * @param request

 * @return

 */

public static String getIpAddr(HttpServletRequest request) {

String ip = request.getHeader("X-Real-IP");

if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {

return ip;

}

ip = request.getHeader("X-Forwarded-For");

if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {

// 多次反向代理后会有多个IP值,第一个为真实IP。

int index = ip.indexOf(',');

if (index != -1) {

return ip.substring(0, index);

else {

return ip;

}

else {

return request.getRemoteAddr();

}

}

 


0 0
原创粉丝点击