springboot 获取客户端IP地址方法

2023-11-08

在使用springboot时,需要获取访问客户端的IP地址,

//获取客户端IP地址
	private String getIpAddress() {
		String ip = request.getHeader("x-forwarded-for");
		if(ip == null || ip.length() == 0 || "unknow".equalsIgnoreCase(ip)) {
			ip = request.getHeader("Proxy-Client-IP");
		}
		if (ip == null || ip.length () == 0 || "unknown".equalsIgnoreCase (ip)) {
	        ip = request.getHeader ("WL-Proxy-Client-IP");
	    }
		 if (ip == null || ip.length () == 0 || "unknown".equalsIgnoreCase (ip)) {
		        ip = request.getRemoteAddr ();
		        if (ip.equals ("127.0.0.1")) {
		            //根据网卡取本机配置的IP
		            InetAddress inet = null;
		            try {
		                inet = InetAddress.getLocalHost ();
		            } catch (Exception e) {
		                e.printStackTrace ();
		            }
		            ip = inet.getHostAddress ();
		        }
		    }
		    // 多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
		    if (ip != null && ip.length () > 15) {
		        if (ip.indexOf (",") > 0) {
		            ip = ip.substring (0, ip.indexOf (","));
		        }
		    }
		    return ip;

		
		
	}

在windows7 使用localshot访问时,获取到的IP地址为0:0:0:0:0:1  原因是localhost解析不出来 需要使用正常的IP地址访问时,则可正确的得到访问client端的IP地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

springboot 获取客户端IP地址方法 的相关文章

随机推荐

  • 11月10日 生命值,减少生命值,创建生命值UI UE4斯坦福 学习笔记

    制作角色属性Comp 添加一个Actorcomp 在 h内添加生命值与减少血量的函数 protected 只在蓝图内可以编辑 在编辑器界面不能编辑 UPROPERTY EditDefaultsOnly BlueprintReadOnly C
  • Qt应用开发(基础篇)——颜色选择器 QColorDialog

    一 前言 QColorDialog类继承于QDialog 是一个设计用来选择颜色的对话框部件 对话框窗口 QDialog QColorDialog颜色选择器一般用来让用户选择颜色 比如画图工具中选择画笔的颜色 刷子的颜色等 你可以使用静态函
  • 彻底卸载MySQL8.0

    环境需求 win10 MySQL8 0 彻底卸载 1 停止MySQL服务 启动任务管理器 gt 选择服务 gt 找到MySQL gt 右键停止 如果有多个MySQL服务 也全部都要停掉 2 卸载MySQL相关所有组件 打开看控制面板 gt
  • 使用树莓派进行远程视频转播(内网穿透)

    一 准备材料 实体 树莓派摄像头 树莓派 虚拟 云服务器 二 先测试树莓派进行局域网转播 这里是需要安装的软件 sudo apt get install subversion libjpeg8 dev imagemagick libv4l
  • 线性代数系列讲解第七篇 正交向量及正交空间

    正交向量 orthogonal vector 毕达哥拉斯定理 勾股定理 Pythagoras 我们很容易得出 x 2 y 2 x y 2 x 2 y 2 x y 2 x 2 y 2 x y 2 这就是勾股定理 我们可以将一个向量的模的平方写
  • 服务器改配项目,网络服务器搭建(项目五)[xxxx1214修改].ppt

    网络服务器搭建 项目五 xxxx1214修改 4 查看启动信息 service named restart 如果named服务无法正常启动 可以查看提示信息 根据提示信息更改配置文件 5 查看端口 如果服务正常工作 则会开启TCP和UDP的
  • 自动化测试:python测试结果和报告自动发送邮件

    一 带有附件发送邮件 1 导入模块 MIMEMultipart from email mime multipart import MIMEMultipart 复制 2 先读取要发送文件的内容 file new 是测试报告路径的参数名 3 下
  • Linux 动态库 soname 实践

    xredis 因为项目中使用到了 xredis C 开发的redis客户端 是对hiredis的C 封装 在 makefile 中发现使用到了 Wl soname 这个语法 之前没怎么了解过 特此记录 makefile 节选如下 XREDI
  • LeetCode—200.岛屿数量(Number of Islands)——分析及代码(C++)

    LeetCode 200 岛屿数量 Number of Islands 分析及代码 C 一 题目 二 分析及代码 1 深度优先搜索 1 思路 2 代码 3 结果 三 其他 一 题目 给定一个由 1 陆地 和 0 水 组成的的二维网格 计算岛
  • elementui确认消息区分取消和关闭按钮

    默认情况下 elementui的确认消息 取消按钮和右上角弹窗 走的是同一个方法 也就是catch方法的回调 如果功能上需要做区分 就没法区分了 所以 要解决这个问题 就需要在取消的回调方法里做一个判断 来区分是点击右上角的取消 还是点击的
  • 如何隐藏unity窗口中的变量、如何设置变量范围、在编辑器中如何显示私有变量与Awake、start之间的区别

    什么是脚本 cs的文本文件 类文件 附加到游戏物体中 定义游戏对象行为指令的代码 c 类包括 字段 属性 构造方法 方法 脚本文件包括 字段 方法 不能在脚本文件里写构造方法 一些unity脚本小属性 序列化字段 作用 在编辑器中显示私有变
  • 基于Matlab的BiLSTM实现

    问题背景 目前深度学习多使用python实现 不过想要配置好一个python的深度学习环境有时却并不轻松 常常因为各个第三方库版本兼容性问题而失败 相比之下 matlab仅需一次安装简化了不少工作 这几年matlab的深度学习工具箱也是发展
  • 高斯过程回归

    文章目录 效果一览 文章概述 研究内容 程序设计 参考资料 效果一览 文章概述 高斯过程回归 Matlab实现高斯过程回归多输入单输出预测 Gaussian Process Regression 研究内容 高斯过程回归 Gaussian P
  • OpenFeign 入门教程 - 基础篇

    目录 Spring Cloud OpenFeign 介绍 Feign 概述 Spring Cloud OpenFeign 概述 Spring Cloud OpenFeign 的特性 Feign 与 Spring Cloud OpenFeig
  • Centos7 linux 安装 redis 遇到的几个问题

    环境 centos7 redis 5 0 解决方案仅供参考 如不能解决问题 请查找请他方案 1 不能编译没有GCC 编译工具 make报错 make 1 persist settings Error 2 ignored CC adlist
  • DataX全量和增量mysqltomysql(二)

    全量mysqltomysql 进入目录编写json cd usr local datax job vi zabbixmysql2mysql json 写入的表结构要和reader的表结构一样 先建立好 编写json文件 job conten
  • Python爬虫学习笔记(一)————网页基础

    目录 1 网页的组成 2 HTML 1 标签 2 比较重要且常用的标签 列表标签 超链接标签 a标签 img标签 用于渲染 图片资源的标签 div标签和span标签 3 属性 4 常用的语义化标签 5 元素的分类及特点 块元素 行内元素 行
  • 企业微信开发(二)安全性全面升级

    参考地址 企业微信帐号ID安全性全面升级 接口文档 企业微信开发者中心 客户标签ID的转换 接口文档 企业微信开发者中心 涉及的ID有corpid userid external userid与unionid 标签ID 客户群成员 微信客户
  • C语言自定义类型详解(结构体+枚举+联合)

    目录 结构体 结构体的类型声明 结构体的内存对齐 位段 枚举 联合 共用体 结构体 结构体的类型声明 结构是一些值的集合 这些值称为成员变量 结构的每个成员可以是不同类型的变量 结构的声明 例如定义一个学生 typedef struct S
  • springboot 获取客户端IP地址方法

    在使用springboot时 需要获取访问客户端的IP地址 获取客户端IP地址 private String getIpAddress String ip request getHeader x forwarded for if ip nu