Java如何获取HTTP请求中真实IP地址呢?

书欣 Java经验 发布时间:2023-01-31 15:17:55 阅读数:15589 1
由于一些请求进行了多次转发和反向代理,那么我们如何获取这些请求的真实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;
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202301/16751495205591.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者