springboot 获取访问接口的请求的IP地址的实现

工具类:

import javax.servlet.http.HttpServletRequest;import java.net.InetAddress;import java.net.UnknownHostException; /** * @Author : JCccc * @CreateTime : 2018-11-23 * @Description : * @Point: Keep a good mood **/public class IpUtil {    public static String getIpAddr(HttpServletRequest request) {        String ipAddress = null;        try {            ipAddress = request.getHeader("x-forwarded-for");            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {                ipAddress = request.getHeader("Proxy-Client-IP");            }            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {                ipAddress = request.getHeader("WL-Proxy-Client-IP");            }            if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {                ipAddress = request.getRemoteAddr();                if (ipAddress.equals("127.0.0.1")) {                    // 根据网卡取本机配置的IP                    InetAddress inet = null;                    try {                        inet = InetAddress.getLocalHost();                    } catch (UnknownHostException e) {                        e.printStackTrace();                    }                    ipAddress = inet.getHostAddress();                }            }            // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割            if (ipAddress != null && ipAddress.length() > 15) { // "***.***.***.***".length()                // = 15                if (ipAddress.indexOf(",") > 0) {                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));                }            }        } catch (Exception e) {            ipAddress="";        }        // ipAddress = this.getRequest().getRemoteAddr();         return ipAddress;    }}

方法调用:

(当接口 /test 被调用,request就能自动获取出来,然后调用工具类方法进行解析获取了。)

@RequestMapping(value = "/test", method = RequestMethod.GET)public String test(HttpServletRequest request){     //获取IP地址    String ipAddress =IpUtil.getIpAddr(request);     return ipAddress;}
(0)

相关推荐