Java获取请求主机真实ip
发布日期:2021-05-09 02:05:46 浏览次数:17 分类:博客文章

本文共 1260 字,大约阅读时间需要 4 分钟。

一般情况下 getRemoteAddr()是可以正常使用的,代码如下:

public String getIpAdress(HttpServletRequest request) {           ip = request.getRemoteAddr();         return ip;  }

但是针对IP是否使用代理访问进行处理,如下:

public String getIpAdress() {        RequestAttributes requestAttributes = RequestContextHolder.getRequestAttributes();        ServletRequestAttributes sra = (ServletRequestAttributes) requestAttributes;        HttpServletRequest request = sra.getRequest();        //针对IP是否使用代理访问进行处理        String 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.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();         }         return ip;    }

 

上一篇:在IDEA下导入Maven项目之后 Dependencies报红线
下一篇:《浅谈单例设计模式的几种方案》

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2025年05月08日 12时10分01秒