SpringBoot获取不到用户真实IP怎么办

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 通过以上方法,你可以在Spring Boot应用中获取用户的真实IP地址。买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云

在Spring Boot中获取用户真实IP的方法如下:

  1. 在Spring Boot的Controller方法中,可以通过 HttpServletRequest对象来获取用户请求信息,包括IP地址。

  2. 在Controller方法的参数列表中添加 HttpServletRequest参数,然后使用以下代码获取用户真实IP:

    @GetMapping("/getRealIP")
    public String getRealIP(HttpServletRequest request) {
        String ipAddress = request.getHeader("X-Forwarded-For");
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("WL-Proxy-Client-IP");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_CLIENT_IP");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
        }
        if (ipAddress == null || ipAddress.isEmpty() || "unknown".equalsIgnoreCase(ipAddress)) {
            ipAddress = request.getRemoteAddr();
        }
        return "User's real IP: " + ipAddress;
    }
    
  3. 以上代码通过依次尝试获取常见的代理头信息,从而获取用户的真实IP地址。如果所有的代理头信息都没有提供IP地址,那么就会使用 request.getRemoteAddr()来获取IP地址。

通过以上方法,你可以在Spring Boot应用中获取用户的真实IP地址。

目录
相关文章
|
10天前
|
Java 数据库连接 开发工具
web后端-SpringCloud-Config分布配置
web后端-SpringCloud-Config分布配置
springboot 获取访问接口的请求的IP地址
springboot 获取访问接口的请求的IP地址
2490 0
|
存储 安全 Java
SpringBoot实战(六)之使用LDAP验证用户
关于ubuntu16.04服务器安装配置LDAP参考链接为:https://www.howtoing.com/how-to-install-and-configure-openldap-and-phpldapadmin-on-ubuntu-16-04/ 本文主要讲LDAP相关的概念,普及相关知识和相关例子实战。
3411 0
|
10天前
|
开发工具 git 微服务
【二十三】搭建SpringCloud项目六(Config)配置中心动态刷新
【二十三】搭建SpringCloud项目六(Config)配置中心动态刷新
23 0
|
10天前
|
Java 开发工具 git
【二十二】搭建SpringCloud项目六(Config)配置中心
【二十二】搭建SpringCloud项目六(Config)配置中心
42 0
|
10天前
|
监控 Java 测试技术
基于springboot实现的个人性格测试系统(分前后端)
基于springboot实现的个人性格测试系统(分前后端)
|
9月前
|
前端开发 Java
SpringBoot-9-Validation数据--使数据真实
数据校验是一个项目的基础模块,也许我们一些入门编码没有多久,了解前端的同学会说,我们已经在前端对数据进行了基础的校验了,还需要在后台对数据进行校验?答案是肯定的,因为前端传递给后台的数据没有百分百值得信任的,这是因为一些别有用心的人,可以模拟前端对后台进行数据发送,可能会发送一些操作后台的指令等非法数据,如果这些数据一旦发送到后台那么后果是很严重的。因此后端校验也是必须的,本章节我们介绍SpringBoot的后端数据校验。
38 1
|
10月前
|
Java Linux Nacos
【Java项目】SpringCloud项目注册到Nacos中心时显示的是内网IP导致不同服务器之间无法互相调用接口的解决并发
【Java项目】SpringCloud项目注册到Nacos中心时显示的是内网IP导致不同服务器之间无法互相调用接口的解决并发
213 0
|
11月前
|
Java 测试技术 数据库连接
|
Java Linux 应用服务中间件
SpringBoot指定端口的几种方式
想法的来源 (1)其实我Linux用的贼烂,一开始的时候我搭建一个服务的时候我不清楚端口是否开放,比如我把阿里云的防火墙关闭了,但是我没有配置安全组,我任然不能通过某某端口访问。 (2)比如你学习nginx的时候,你需要做映射,如果你需要好几个服务,那我原来的操作是在IDEA写完SpringBoot打包然后放到Linux上,然后在修改端口,在打包在放在Linux上,贼麻烦
283 0