獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址
阿新 • • 發佈:2017-09-08
cas return ++ strip dex except servlet desc 請求
/** * 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址; * @Title: getIpAddress * @Description: TODO(這裏用一句話描述這個方法的作用) * @param @param request * @param @return * @param @throws IOException 參數 * @return String 返回類型 * @throws */ public String getIpAddress(HttpServletRequest request) throws IOException { // 獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址 String ip = request.getHeader("X-Forwarded-For"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { 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.getHeader("HTTP_CLIENT_IP"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } } else if (ip.length() > 15) { String[] ips = ip.split(","); for (int index = 0; index < ips.length; index++) { String strIp = (String) ips[index]; if (!("unknown".equalsIgnoreCase(strIp))) { ip = strIp; break; } } } return ip; }
獲取請求主機IP地址,如果通過代理進來,則透過防火墻獲取真實IP地址