JAVA获取访问用户的客户端IP(适用于公网与局域网)
- /**
- * 获取访问用户的客户端IP(适用于公网与局域网).
- */
- public static final String getIpAddr(final HttpServletRequest request)
- throws Exception {
- if (request == null) {
- throw (new Exception("getIpAddr method HttpServletRequest Object is null"));
- }
- String ipString = request.getHeader("x-forwarded-for");
- if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {
- ipString = request.getHeader("Proxy-Client-IP");
- }
- if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {
- ipString = request.getHeader("WL-Proxy-Client-IP");
- }
- if (StringUtils.isBlank(ipString) || "unknown".equalsIgnoreCase(ipString)) {
- ipString = request.getRemoteAddr();
- }
- // 多个路由时,取第一个非unknown的ip
- final String[] arr = ipString.split(",");
- for (final String str : arr) {
- if (!"unknown".equalsIgnoreCase(str)) {
- ipString = str;
- break;
- }
- }
- return ipString;
- }