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; 
} 

OK

转自:springboot 获取访问接口的请求的IP地址

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18742.html

(0)
上一篇 2021年7月19日 21:27
下一篇 2021年7月19日 21:27

相关推荐

发表回复

登录后才能评论