SpringBoot获取不到用户真实IP怎么办

在Spring Boot中获取用户真实IP的方法如下:

  1. 在Spring Boot的Controller方法中,可以通过 HttpServletRequest对象来获取用户请求信息,包括IP地址。

  2. 在Controller方法的参数列表中添加 HttpServletRequest参数,然后使用以下代码获取用户真实IP:

    @GetMapping("/getRealIP")
    public String getRealIP(HttpServletRequest request) {
        String ipAddress = request.getHeader("X-Forwarded-For");
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getRemoteAddr();
        }
        return "User's real IP: " + ipAddress;
    }
     
     
  3. 以上代码通过依次尝试获取常见的代理头信息,从而获取用户的真实IP地址。如果所有的代理头信息都没有提供IP地址,那么就会使用 request.getRemoteAddr()来获取IP地址。

通过以上方法,你可以在Spring Boot应用中获取用户的真实IP地址。

posted @ 2025-03-16 14:58  w199899899  阅读(330)  评论(0)    收藏  举报