javaweb_获取用户真实ip地址
2013-05-08 17:44
239 查看
一般情况下使用Request.getRemoteAddr()即可,但是通过nginx等反向代理软件后,该方法会失效。
因此,从一些比较成熟的框架中看到一个比较好的方法:
先从Header中获取X-Real-IP,
如果不存在,这时再从X-Forward-For中获取第一个IP,用逗号分隔;
如果还不存在,调用Request.getRemoteAddr()
下面贴一下源码
1.
2.
因此,从一些比较成熟的框架中看到一个比较好的方法:
先从Header中获取X-Real-IP,
如果不存在,这时再从X-Forward-For中获取第一个IP,用逗号分隔;
如果还不存在,调用Request.getRemoteAddr()
下面贴一下源码
1.
/** * 获取访问者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(); } }
2.
private String getIpAddr(HttpServletRequest request){ String netWork = request.getHeader("x-forwarded-for"); if (netWork == null || netWork.length() == 0 || "unknown".equalsIgnoreCase(netWork)) { netWork = request.getHeader("Proxy-Client-IP"); } if (netWork == null || netWork.length() == 0 || "unknown".equalsIgnoreCase(netWork)) { netWork = request.getHeader("WL-Proxy-Client-IP"); } if (netWork == null || netWork.length() == 0 || "unknown".equalsIgnoreCase(netWork)) { netWork = request.getRemoteAddr(); } // 多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值 if (netWork != null && netWork.contains(",")) { String ip_array[] = netWork.split(","); netWork = ip_array[0]; } //System.out.println("-----------ip-----------:" + netWork); return netWork; }
相关文章推荐
- Java中使用HttpRequest获取用户真实IP地址
- Java中使用HttpRequest获取用户真实IP地址
- java获取用户访问的真实IP地址和代理IP
- java 获取用户真实ip地址
- 使用nginx之后,在web应用端获取用户的真实ip地址
- Java 通过HttpRequest获取请求用户真实IP地址
- Java 通过HttpRequest获取请求用户真实IP地址
- java 如何获取客户端的真实IP地址
- 前端Nginx,后端Apache获取用户真实IP地址
- 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合
- Java Web 获取客户端真实IP
- Java获取真实客户端IP地址
- 前端Nginx,后端Apache获取用户真实IP地址
- Java获取访问者真实的IP地址
- Java获取客户端真实IP地址的两种方法
- Java获取客户端真实IP地址的两种方法
- 根据HttpServletRequest获取用户真实IP地址
- JAVA IP地址相关:用Java来获取访问者真实的IP地址,IP地址转化成long型数的算法
- java 获取用户真实ip
- JSP如何获取用户的真实IP地址[转载]