获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
Posted xujishou
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址相关的知识,希望对你有一定的参考价值。
/** * 获取请求主机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地址的主要内容,如果未能解决你的问题,请参考以下文章
多级反向代理下,Java获取请求客户端的真实IP地址多种方法整合
多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合