java中servlet如何获取真实ip呢?
下文笔者讲述servlet获取真实IP地址的方法分享,如下所示
获取真实IP地址的方法分享
何为真实IP地址
由于使用了很多反向代理技术 导致IP地址层层转发 那么我们在日常开发中如何获取真实IP地址呢? 下文笔者将一一道来,如下所示
实现思路: 1.使用request.getRemoteAddr()获取真实IP 2.当使用反向代理后 无法直接获取,此时我们可使用X-FORWARDED-FOR从报头中获取 3.当没有x-forwarded-for则尝试用proxy-client-ip、wl-proxy-client-ip例:
获取真实IP地址的方法分享
/** * * @param request 请求 */ private static String getRemoteHost(HttpServletRequest request) { // 反向代理后:转发请求的HTTP头信息中,增加了X-Real-IP信息 String ip = request.getHeader("X-Real-IP"); if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("x-Forwarded-For"); } if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("Proxy-Client-IP"); } if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); } if (StringUtils.isBlank(ip) || STR_UNKNOWN.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); } return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。