Java Spring Boot/MVC 获取用户真实客户端IP

编程 > Java > Spring (169) 2025-10-22 20:35:38

获取客户端来源真实ip在很多业务场景都需要,比如微信支付的v2版,要求必须有下单的用户来源IP。下面详解。

 

从Java代码端获取真实客户端IP

源码参考:

    public static String getRealIp(HttpServletRequest request){
        String ip = request.getHeader("X-Real-IP");
        if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
            ip = request.getHeader("X-Forwarded-For");
            if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
                ip = request.getHeader("Proxy-Client-IP");
                if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
                    ip = request.getHeader("WL-Proxy-Client-IP");
                    if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
                        ip = request.getHeader("HTTP_CLIENT_IP");
                        if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
                            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
                            if (ip == null || ip.isEmpty() || "unknown".equalsIgnoreCase(ip)) {
                                ip = request.getRemoteAddr();
                            }
                        }
                    }
                }
            }
        }
        return ip;
    }

 

有时候只从Java代码层是拿不到真实ip的,因为一般项目前面都有代理服务器,例如nginx。所以同时要配置好代理服务的客户端ip转发。

Nginx 代理转发来源客户端真实ip参参考:Nginx代理获取/传递真实ip

 


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
获取客户端来源真实ip在很多业务场景都需要,比如微信支付的v2版,要求必须有下单的用户来源IP。下面详解。 从Java代码端获取真实客户端IP源码参考: pub
Java编程中spring mvc 获取请求ip,springmvc 获取访问ip
配置参考//....其他忽略....location / { proxy_set_header X-Real-IP $remote_addr; proxy_se
​Spring Boot 或者Spring MVC 判断请求类型是否为Ajax请求具体如下:public static boolean isAjaxRequest(HttpServletRequ...
Spring框架5.0,spring mvc 5.0入门教程。DispatcherServlet的详细讲解配置以及spring mvc5.0的helloword程序
Linux系统修改静态IP #vi /etc/sysconfig/network-script/ifcfg-eth0修改为:DEVICE="eth0"BOOTP
linux 配置静态ip地址,Centos6.5配置静态IP地址,Linux系统配置静态IP地址
为主机配置 IP 地址并调通网络,是开发工程师和网络管理员的必备技能。本节提供了 4 个典型的实验场景,讲解为 Linux 主机配置 IP 地址的关键步骤。实践
Java编程中Spring Boot整合RabbitMQ实现消息中间件RabbitMQ的使用 1 主要用spring-boot-starter-amqp来整合R
Java编程中spring boot项目如何获取spring容器applicationContext
docker-compose.yml配置文件配置容器具体ip实现。注意配置具体ip必须知道所在网络的网段,错误配置无法使用,一般和自定义了子网段的网络配合使用。
springmvc集成logback不打印spring mvc启动日志解决
Spring Context 与Spring MVC Context那些坑
spring mvc采用mapping代码方式配置项目的默认首页注意事项,spring mvc,默认首页,spring