当前位置: 首页 > news >正文

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

 

 

相关文章:

  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • 什么是Kafka
  • Springboot 线程同步之Semaphore 的简单使用
  • JAVA Gson的使用
  • JAVA 最全最细的fastjson使用介绍,带你透彻领悟JSON
  • fastJson注解@JSONField 的作用及其效果
  • HttpClient 不同版本的超时时间设置
  • 使用两个栈实现队列,简单例子
  • 数据库ACID
  • 线程小记
  • JAVA JDK1.8 时间戳与时间格式化 实用工具类
  • 单例模式 之内部类延迟加载,(多)线程安全
  • Springboot 用session监听器统计在线用户数量
  • (Redis使用系列) Springboot 实现Redis消息的订阅与分布 四
  • JAVA 责任链设计模式
  • Flannel解读
  • input的行数自动增减
  • Javascript 原型链
  • Python_网络编程
  • python学习笔记-类对象的信息
  • 那些年我们用过的显示性能指标
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 06-01 点餐小程序前台界面搭建
  • ​你们这样子,耽误我的工作进度怎么办?
  • #define与typedef区别
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (附源码)ssm高校实验室 毕业设计 800008
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • .chm格式文件如何阅读
  • .NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .NET 发展历程
  • .net 反编译_.net反编译的相关问题
  • .net 重复调用webservice_Java RMI 远程调用详解,优劣势说明
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @Autowired注解的实现原理
  • @GetMapping和@RequestMapping的区别
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Bada开发]初步入口函数介绍
  • [C++] 如何使用Visual Studio 2022 + QT6创建桌面应用
  • [C++][基础]1_变量、常量和基本类型
  • [C++]Leetcode17电话号码的字母组合
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [EFI]ASUS EX-B365M-V5 Gold G5400 CPU电脑 Hackintosh 黑苹果引导文件
  • [git] windows系统安装git教程和配置
  • [k8s系列]:kubernetes·概念入门
  • [LeetCode] Merge Two Sorted Lists
  • [LeetCode]Max Points on a Line
  • [linux] shell中的()和{}
  • [OCR]Python 3 下的文字识别CnOCR