透过代理获取客户端请求的真实ip
2016-04-27 21:29
411 查看
import javax.servlet.http.HttpServletRequest; import java.io.IOException; /** * Created by wuyanfeng on 2015/11/23. */ public class NetworkUtil { /** * 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址; * * @param request * @return * @throws java.io.IOException */ public final static String getIpAddress(HttpServletRequest request) throws IOException { // 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址 String ip = request.getHeader("X-Forwarded-For"); System.out.println("netWorkUtils getIp:"+ip); // if (logger.isInfoEnabled()) { //// logger.info("getIpAddress(HttpServletRequest) - X-Forwarded-For - String ip=" + ip); // } 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 (logger.isInfoEnabled()) { //// logger.info("getIpAddress(HttpServletRequest) - Proxy-Client-IP - String ip=" + ip); // } } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("WL-Proxy-Client-IP"); // if (logger.isInfoEnabled()) { //// logger.info("getIpAddress(HttpServletRequest) - WL-Proxy-Client-IP - String ip=" + ip); // } } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_CLIENT_IP"); // if (logger.isInfoEnabled()) { // logger.info("getIpAddress(HttpServletRequest) - HTTP_CLIENT_IP - String ip=" + ip); // } } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getHeader("HTTP_X_FORWARDED_FOR"); // if (logger.isInfoEnabled()) { // logger.info("getIpAddress(HttpServletRequest) - HTTP_X_FORWARDED_FOR - String ip=" + ip); // } } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr(); // if (logger.isInfoEnabled()) { // logger.info("getIpAddress(HttpServletRequest) - getRemoteAddr - String ip=" + ip); // } } } 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; } }
相关文章推荐
- leetcode 86. Partition List
- php示例代码
- leetcode 046 Permutations
- String和Stingbuffer赋值""区别
- leetcode-19. Remove Nth Node From End of List
- 算法
- double linked list双向链表
- 扩展欧几里得
- Laravel 5 开发API(Dingo Api + JWT)
- 结构体容器vector
- [C语言][LeetCode][118]Pascal's Triangle
- 专业的事情交给专业的工具来做
- JSON.parse()和JSON.stringify()
- 类,对象入门
- 导航高亮
- Ubuntu搭建Android-Studio环境
- Incantation Solution
- quartZ的cron表达式
- 【华为公司Python面试题】,要求10分钟写出代码,
- 团队项目第一阶段冲刺站立会议09