`
异步获取爱
  • 浏览: 78163 次
  • 性别: Icon_minigender_1
  • 来自: 大男子主义世界
社区版块
存档分类
最新评论

获得用户正确的IP地址

阅读更多
像移动网关一样,iisforward这个ISAPI过滤器也会对request对象进行再包装,附加一些WLS要用的头信息。这种情况下,直接用request.getRemoteAddr()是无法取到真正的客户IP的。

实际的iisforward附加头如下:

WL-Proxy-Client-IP=211.161.1.239
Proxy-Client-IP=211.161.1.239
X-Forwarded-For=211.161.1.239
WL-Proxy-Client-Keysize=
WL-Proxy-Client-Secretkeysize=
X-WebLogic-Request-ClusterInfo=true
X-WebLogic-KeepAliveSecs=30
X-WebLogic-Force-JVMID=-327089098
WL-Proxy-SSL=false

综上,正确作法如下:
private String getIpAddr() {
     String ipAddress = null;
     //ipAddress = this.getRequest().getRemoteAddr();
     ipAddress = this.getRequest().getHeader("x-forwarded-for");
     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
      ipAddress = this.getRequest().getHeader("Proxy-Client-IP");
     }
     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
         ipAddress = this.getRequest().getHeader("WL-Proxy-Client-IP");
     }
     if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
      ipAddress = this.getRequest().getRemoteAddr();
      if(ipAddress.equals("127.0.0.1")){
       //根据网卡取本机配置的IP
       InetAddress inet=null;
    try {
     inet = InetAddress.getLocalHost();
    } catch (UnknownHostException e) {
     e.printStackTrace();
    }
    ipAddress= inet.getHostAddress();
      }
       
     }

     //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
     if(ipAddress!=null && ipAddress.length()>15){ //"***.***.***.***".length() = 15
         if(ipAddress.indexOf(",")>0){
             ipAddress = ipAddress.substring(0,ipAddress.indexOf(","));
         }
     }
     return ipAddress;
  }
分享到:
评论

相关推荐

    查QQ用户IP地址,查QQ用户IP地址

    查QQ用户IP地址 1.通过FolkOicq查IP FolkOicq是个能给QQ添加IP显示补丁的程序,最新版本FolkQQ0530SE_B2。下载后得到一个Zip的压缩包,用Winzip解压出文件QQ2000.EXE,将它复制到QQ的安装目录下(在这之前最好是...

    php取得用户IP地址类.zip

    取得用户IP地址类,能够在用户访问的同时,获得用户登录的IP地址。

    qt根据ip地址得到地理位置

    QT使用http get的方式得到指定的IP地址地理位置信息http://ip.taobao.com/service/getIpInfo.php?ip=[需要查询的IP],如输入IP192.168.1.1,得到地理位置为中国广东电信

    动态获得远端电脑IP地址

    1,本软件由WalNut_Server(服务器端)和WalNut_Clinet(客户端)构成,WalNut_Server主要工作是获得广域网IP地址 并发送给WalNut_Clinet。 2,双击WalNut_Server,运行后会自动隐藏,并开机自启动,按"Ctrl+Alt+F9"唤醒...

    获取Ip地址的Java工具类

    通过该工具类可以获得请求的IP地址,适用于后台管理系统的信息统计。

    这是用java编写的一个小小的获取ip地址的软件

    总共才几行代码,很简易的一个用来获取ip地址的软件

    asp.net获得用户IP和MAC地址的方法

    通过在网页上写入此代码,可以获取浏览此网页的用户的IP及MAC地址,用来防止恶意注册、投票等。。。。

    php获取IP地址类库

    取得用户IP地址类,能够在用户访问的同时,获得用户登录的IP地址。

    idea,java获取ip地址

    使用intellij idea java开发软件,通过servlet获取访问用户的真实ip地址

    ip地址查询

    很简单的ip地址转换 需要的话可以下了看看

    IP地址是计算机网络中用来唯一标识一个设备的地址-IP地址转换.pdf

    在`main`函数中,先从用户输入获得点分十进制形式的IP地址,然后调用`ipToInteger`函数将其转换为无符号整数形式的IP地址,并输出结果。接着,调用`integerToIp`函数将无符号整数形式的IP地址转换为点分十进制形式的...

    InnoSetup 获取本机IP地址

    InnoSetup 获取本机IP地址的方法

    获得访问者的IP地址

    解压程序,用eclipse打开,运行tomcat,在地址栏输入http://地址:8080/Test-IP

    Delphi编程根据IP地址得到主机名

    在网络程序的设计过程中,经常需要根据得到的IP地址取得主机的名称,本实例将演示如何根据用户输入的IP地址获取对应主机的名称。

    pb中如何获得机器ip地址

    //获得主机名和IP地址 ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "." ls_IpAddress += string...

    自动获得Ip地址

    1,本软件由WalNut_Server(服务器端)和WalNut_Clinet(客户端)构成,WalNut_Server主要工作是获得广域网IP地址 并发送给WalNut_Clinet。 2,双击WalNut_Server,运行后会自动隐藏,并开机自启动,按"Ctrl+Alt+F9"唤醒...

    由域名获取其IP地址

    此程序可以根据用户给出的域名显示出其对应的IP地址(不过,这需要在Internet连接时才有效。若是在局域网中,只要设置了域名,也可以获得其IP地址)

    IP地址查询 C++源代码

    输入文件是IPAddr.txt,该文件描述了不同地区、不同用户获得的公有IP地址块信息。要求将该文件中的数据到线性表中,并完成以下的功能。 1)使用静态链表作为存储结构 2)静态链表使用动态数组,数组容量N根据数据集...

    Java中使用HttpRequest获取用户真实IP地址

    主要介绍了Java中使用HttpRequest获取用户真实IP地址,使用本文方法可以避免Apache、Squid、nginx等反向代理软件导致的非真实IP地址,需要的朋友可以参考下

    python 根据IP地址查对应的地理信息源码

    Python根据IP地址查询对应的地理信息的实现原理是利用IP地址库,IP地址库是一个存放IP地址和其对应地理信息的数据库,通过查询IP地址库,就可以得到某IP地址对应的地理信息,比如国家、省份、城市、运营商等。...

Global site tag (gtag.js) - Google Analytics