Java如何获取HTTP请求中真实IP地址呢?
由于一些请求进行了多次转发和反向代理,那么我们如何获取这些请求的真实IP地址呢?
下文笔者将一一道来,如下所示
获取真实的请求IP地址
下文笔者将一一道来,如下所示
实现思路: 通过获取HttpServletRequest对象中的Header头信息 即可查找出真实的IP地址例:
获取真实的请求IP地址
/** * 获取真实IP * @param request 请求体 * @return 真实IP */ public static String getRealIp(HttpServletRequest request) { // 这个一般是Nginx反向代理设置的参数 String ip = request.getHeader("X-Real-IP"); if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("X-Forwarded-For"); } 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.getRemoteAddr(); } // 处理多IP的情况(只取第一个IP) if (ip != null && ip.contains(",")) { String[] ipArray = ip.split(","); ip = ipArray[0]; } return ip; }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。