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

编程教程 > Java > Spring (60) 2025-01-24 09:00:48

获取客户端来源真实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...
Linux系统修改静态IP #vi /etc/sysconfig/network-script/ifcfg-eth0修改为:DEVICE="eth0"BOOTP
Spring框架5.0,spring mvc 5.0入门教程。DispatcherServlet的详细讲解配置以及spring mvc5.0的helloword程序
linux 配置静态ip地址,Centos6.5配置静态IP地址,Linux系统配置静态IP地址
为主机配置 IP 地址并调通网络,是开发工程师和网络管理员的必备技能。本节提供了 4 个典型的实验场景,讲解为 Linux 主机配置 IP 地址的关键步骤。实践
docker-compose.yml配置文件配置容器具体ip实现。注意配置具体ip必须知道所在网络的网段,错误配置无法使用,一般和自定义了子网段的网络配合使用。
Java编程中Spring Boot整合RabbitMQ实现消息中间件RabbitMQ的使用 1 主要用spring-boot-starter-amqp来整合R
Java编程中spring boot项目如何获取spring容器applicationContext
springmvc集成logback不打印spring mvc启动日志解决
Spring Context 与Spring MVC Context那些坑
本文针对IPv4地址详解每个使用 IP 协议进行通信的实体,都需要分配一个地址,这就是我们所熟知的 IP 地址。IP 地址由 4 个字节组成,共 32 位,理论