JSP 获取用户的真实IP两种实现方法详解
发布时间 - 2026-01-11 01:57:00 点击率:次JSP 获取用户的真实IP两种实现方法详解

在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了 Apache,Nagix等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用 request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或 192.168.1.110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端 IP地址和原来客户端请求的服务器地址。
举例来说,当我们访问口碑网首页hangzhou.jsp时,其实并不是我们浏览器真正访问到了服务器上的hangzhou.jsp 文件,而是先由代理服务器Nagix去访问hagnzhou.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问hangzhou.jsp的,所以hangzhou.jsp中通过 request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。
获得客户端真实IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
获得客户端真实IP地址的方法二
public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for");
if(ip == null || ip.length() == 0 || "unknown".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();
}
return ip;
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# JSP
# 获取用户的真实IP
# 获取IP的方法
# jsp获得本地及serverIP的简单方法
# Eclipse编辑jsp、js文件时卡死现象的解决办法汇总
# JSP如何获取客户端真实IP地址
# JSP中使用JavaScript动态插入删除输入框实现代码
# JSP 获取真实IP地址的代码
# 客户端
# 代理服务器
# 都是
# 增加了
# 但是在
# 中间层
# 两种
# 举例来说
# 给我们
# 希望能
# 就不能
# 当我们
# 谢谢大家
# 首页
# 再将
# 先由
# 情况下
# 和服务
# 器上
# 口碑网
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
iOS正则表达式验证手机号、邮箱、身份证号等
Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用
Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知
Win11怎么设置虚拟桌面 Win11新建多桌面切换操作【技巧】
在线教育网站制作平台,山西立德教育官网?
Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
如何用景安虚拟主机手机版绑定域名建站?
Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】
如何彻底卸载建站之星软件?
JavaScript数据类型有哪些_如何准确判断一个变量的类型
Android自定义控件实现温度旋转按钮效果
Laravel怎么设置路由分组Prefix_Laravel多级路由嵌套与命名空间隔离【步骤】
如何快速生成凡客建站的专业级图册?
Laravel怎么使用Intervention Image库处理图片上传和缩放
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
高端云建站费用究竟需要多少预算?
微信小程序 闭包写法详细介绍
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何实现建站之星域名转发设置?
Laravel如何处理和验证JSON类型的数据库字段
太平洋网站制作公司,网络用语太平洋是什么意思?
bing浏览器学术搜索入口_bing学术文献检索地址
如何在阿里云服务器自主搭建网站?
HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?
如何用低价快速搭建高质量网站?
如何在建站之星网店版论坛获取技术支持?
js实现获取鼠标当前的位置
厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?
如何在企业微信快速生成手机电脑官网?
javascript读取文本节点方法小结
Android滚轮选择时间控件使用详解
Laravel如何使用Blade模板引擎?(完整语法和示例)
Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
详解Huffman编码算法之Java实现
创业网站制作流程,创业网站可靠吗?
油猴 教程,油猴搜脚本为什么会网页无法显示?
高端网站建设与定制开发一站式解决方案 中企动力
如何在万网开始建站?分步指南解析
详解vue.js组件化开发实践
php485函数参数是什么意思_php485各参数详细说明【介绍】
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
如何快速完成中国万网建站详细流程?
JavaScript如何实现路由_前端路由原理是什么
CSS3怎么给轮播图加过渡动画_transition加transform实现【技巧】
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】

