`

<转> 如何获取用户的真实IP

    博客分类:
  • JAVA
阅读更多
问题引出:

在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;
  }

分享到:
评论

相关推荐

    java应用软件程序设计

    ReadTestquestion&lt;br&gt;7.5. 课程设计作业&lt;br&gt;第8章 日历记事本&lt;br&gt;8.1. 设计内容&lt;br&gt;8.2. 设计要求&lt;br&gt;8.3. 总体设计&lt;br&gt;8.4. 具体设计&lt;br&gt;8.4.1. 运行效果与程序发布&lt;br&gt;8.4.2. 主类CalendarPad&lt;br&gt;8.4.3. 记事本...

    jsp编程技巧集锦

    获取用户真实IP地址?&lt;br&gt;105.获取请求中的所有参数?&lt;br&gt;106.获取完整的请求URL?&lt;br&gt;107.在重新显示表单时保留用户已经输入的合法数据?&lt;br&gt;108.使用选代器遍历集合&lt;br&gt;109.使用特定字符串对一个字符串进行分割?&lt;br&gt;...

    LvBBS 94KK美化加强版

    识别代理服务器,更加真实获得用户IP&lt;br&gt; 005.附件上传功能,更加详尽显示文件参数&lt;br&gt; 006.上传非法附件检测,一些修改扩展名上传的将被阻止&lt;br&gt; 007.限制每个用户每天上传文件数,实时统计绝对可靠&lt;br&gt; 008.用户...

    JS 使用搜狐接口获取客户端IP地址

    &lt;title&gt;获取客户端IP地址&lt;/title&gt; &lt;/head&gt; &lt;body&gt; &lt;h1&gt;您的IP地址:&lt;/h1&gt; &lt;div id="ip"&gt;&lt;/div&gt; &lt;script&gt; function handleIPResponse(ip) { document.getElementById('ip').innerText = ip; } var script = ...

    wdb易风改进版

    -- 显示级过滤,一但设置过滤,对所有贴子有效&lt;br&gt; -- 真实IP提取,能提取部分内部IP&lt;br&gt; -- WDB标签的扩展工具面板方便使用,同时使用JS CACHE,减小载入数据量&lt;br&gt; -- IP可以分区段禁止&lt;br&gt; -- 很容易的禁止不想见...

    全码 WDB 论坛

    真实 IP 提取,能提取部分内部IP&lt;br&gt; .IP可以分区段禁止&lt;br&gt; .很容易的禁止不想见的词,不仅在帖子,还包括签名等&lt;br&gt; .主题附带描述&lt;br&gt; .帖子不仅可以转移,而且可以复制,提前&lt;br&gt; .支持最多10个置顶的帖子(由于...

    LeadBBS极速ASP论坛 v2.77

    会员基本资料作了以下保留:身份证号,电话,移动电话,真实姓名&lt;br&gt;292. 用户IP绑定功能,让你的账号多了一道强有力的防线,无懈可击,即使被他人知道密&lt;br&gt; 码和账号,仍然无法使用你的账号.&lt;br&gt;293. 非正式会员...

    PHP获取用户真实IP

    总之,获取用户真实IP的过程需要综合考虑多种因素,包括直接获取、检查代理头信息以及IP地址的有效性验证。在编写代码时,应确保处理各种可能的情况,以获取最准确的信息。通过上述方法,我们可以更可靠地在PHP环境...

    delphi高质量语音聊天源代码

    可以使两个不同局域网内的客户机通过国际互连网进行语音通讯,&lt;br&gt;本程序使用点对点方式,不通过任何中介服务器速度快,语音延迟极小,声音清晰逼真,其效果和真实IP电话&lt;br&gt;不相上下,程序界面简洁,操作简单,是在...

    QYBBS V1.0全插件版(BBSXP美化修改版)

    功能介绍&lt;br&gt; &lt;br&gt; 1、会员属性增加了:文采值...48、闭屏不良IP&lt;br&gt; 49、关闭社区&lt;br&gt; 50、后台广告管理&lt;br&gt; 51、社区整个版面进行了大幅度调整,使其变的更美观&lt;br&gt; &lt;br&gt; 管理名字:100200330&lt;br&gt; 管理密码:1234567

    利用ASP获取客户端真实IP地址.doc

    【ASP获取客户端真实IP地址】 在互联网环境中,为了提供个性化的服务和防范恶意攻击,获取客户端的真实IP地址是一项基础且重要的任务。这篇文章主要探讨如何利用ASP(Active Server Pages)技术来实现这一目标。 *...

    .htaccess

    stopping directory listings and using a different file as the index file.&lt;br&gt;.htaccess可以做大量的事情,包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户...

    java非常强的获取客户端真实IP的两种方法

    ### Java获取客户端真实IP的两种方法详解 #### 一、问题背景 在Web开发中,经常需要获取客户端的真实IP地址来进行一系列的操作,比如统计访问来源、进行地理定位、安全防护等。然而,在实际应用场景中,客户端请求...

    PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置

    PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置

    获取用户真实IP地址

    本篇文章将详细介绍如何在不同情况下获取用户的真实IP地址,并探讨可能遇到的问题。 首先,最常见的方法是在HTTP请求头中查找“X-Real-IP”或“X-Forwarded-For”字段。这些字段通常由代理服务器设置,用于传递原始...

    迷魂记多用户留言本

    基于文本存储数据,&lt;br&gt;系统登录采用了Cookie管理&lt;br&gt;网页的显示采用模板化管理&lt;br&gt;多用户留言管理系统&lt;br&gt;真实 IP 提取,使用代理也逃不出手心 :) 但这个功能对一些代理服务器没用 :(&lt;br&gt;悄悄话功能(只有版主才...

    java获取用户真实ip

    ### 获取用户真实IP的基本原理 1. **HTTP请求头部**:当客户端向服务器发送HTTP请求时,请求头可能包含了客户端IP地址的信息。这些信息通常是通过`X-Forwarded-For`、`Proxy-Client-IP`或`WL-Proxy-Client-IP`这样...

    Java获取客户端真实IP地址

    ### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....

    qt 获取本机的公网IP、内网IP、网关

    qDebug() &lt;&lt; "获取公网IP失败:" &lt;&lt; reply-&gt;errorString(); } reply-&gt;deleteLater(); }); manager.get(QNetworkRequest(QUrl("http://api.ipify.org"))); // 使用http://api.ipify.org作为示例,实际项目中可能...

    获取客户端真实IP(支持代理服务器)

    然而,在实际应用中,很多情况下用户的请求会经过反向代理服务器(如Nginx、Squid等),这使得直接使用`request.getRemoteAddr()`方法获取到的IP地址往往并不是客户端的真实IP地址。 #### 二、问题分析 当客户端...

Global site tag (gtag.js) - Google Analytics