获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址; x-real-ip:171.111 x-forwarded-for:171.1.157.11 remote-host:171.111.157.11 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr()获取IP地址 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址
()
| 25 | * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址,X-Forwarded-For中第一个非unknown的有效IP字符串,则为真实IP地址 |
| 26 | */ |
| 27 | public static String getIpAddr() { |
| 28 | |
| 29 | HttpServletRequest request = |
| 30 | ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); |
| 31 | |
| 32 | |
| 33 | //打印头信息 |
| 34 | // Enumeration enums = request.getHeaderNames(); |
| 35 | // while (enums.hasMoreElements()) { |
| 36 | // String headerName = (String) enums.nextElement(); |
| 37 | // String headerValue = request.getHeader(headerName); |
| 38 | // log.info(headerName + ":" + headerValue); |
| 39 | // } |
| 40 | |
| 41 | |
| 42 | return getIpAddr(request); |
| 43 | } |
| 44 | |
| 45 | /** |
| 46 | * 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址; |
no test coverage detected