编程语言
首页 > 编程语言> > java spring获取请求ip地址

java spring获取请求ip地址

作者:互联网

洒家的需求是 想根据客户端的请求获取ip地址,然后对ip请求加次数限制,客户端请求首先负载均衡(F5)转发到网关(Zuul),网关接收到请求后,从注册中心(Eureka)获取可用服务,在服务端获取请求的ip。

直接上方法:

public static String getIpAddress(HttpServletRequest request) {
        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;
    }

因为此时请求经过了几层的转发,所以我们不能直接用request.getRemoteAddr()来获取。

标签:java,spring,unknown,getHeader,request,equalsIgnoreCase,ip,null
来源: https://blog.csdn.net/weixin_37738830/article/details/99673480