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加速网络【指南】