`

Java获取客户端的真实IP地址_转转转

阅读更多

Java获取客户端的真实IP地址

文章分类:Java编程

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

实际的iisforward附加头如下:

  1. WL-Proxy-Client-IP= 211.161 . 1.239   
  2. Proxy-Client-IP= 211.161 . 1.239   
  3. X-Forwarded-For= 211.161 . 1.239   
  4. WL-Proxy-Client-Keysize=   
  5. WL-Proxy-Client-Secretkeysize=   
  6. X-WebLogic-Request-ClusterInfo= true   
  7. X-WebLogic-KeepAliveSecs= 30   
  8. X-WebLogic-Force-JVMID=- 327089098   
  9. WL-Proxy-SSL= false   


综上,正确作法如下:

  1. private  String getIpAddr() {   
  2.      String ipAddress =  null ;   
  3.       //ipAddress = this.getRequest().getRemoteAddr();   
  4.      ipAddress =  this .getRequest().getHeader( "x-forwarded-for" );   
  5.       if (ipAddress ==  null  || ipAddress.length() ==  0  ||  "unknown" .equalsIgnoreCase(ipAddress)) {   
  6.       ipAddress =  this .getRequest().getHeader( "Proxy-Client-IP" );   
  7.      }   
  8.       if (ipAddress ==  null  || ipAddress.length() ==  0  ||  "unknown" .equalsIgnoreCase(ipAddress)) {   
  9.          ipAddress =  this .getRequest().getHeader( "WL-Proxy-Client-IP" );   
  10.      }   
  11.       if (ipAddress ==  null  || ipAddress.length() ==  0  ||  "unknown" .equalsIgnoreCase(ipAddress)) {   
  12.       ipAddress =  this .getRequest().getRemoteAddr();   
  13.        if (ipAddress.equals( "127.0.0.1" )){   
  14.         //根据网卡取本机配置的IP   
  15.        InetAddress inet= null ;   
  16.      try  {   
  17.      inet = InetAddress.getLocalHost();   
  18.     }  catch  (UnknownHostException e) {   
  19.      e.printStackTrace();   
  20.     }   
  21.     ipAddress= inet.getHostAddress();   
  22.       }   
  23.             
  24.      }   
  25.   
  26.       //对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割   
  27.       if (ipAddress!= null  && ipAddress.length()> 15 ){  //"***.***.***.***".length() = 15   
  28.           if (ipAddress.indexOf( "," )> 0 ){   
  29.              ipAddress = ipAddress.substring( 0 ,ipAddress.indexOf( "," ));   
  30.          }   
  31.      }   
  32.       return  ipAddress;    
  33.   }  
分享到:
评论

相关推荐

    java IP地址工具类,java IP地址获取,java获取客户端IP地址

    2. **获取客户端IP地址**:在Web应用中,服务器需要区分每个客户端,`IpUtils`可能会有方法处理`HttpServletRequest`对象,从HTTP请求头(如`X-Forwarded-For`或`RemoteAddr`)中解析出真实客户端的IP地址。...

    IP工具类,通过传入的request获取ip地址(JAVA)

    System.out.println("客户端IP地址为:" + ipAddress); } } ``` 在上述代码中,`HttpServletRequest`的`getRemoteAddr()`方法用于获取客户端的IP地址。然而,如果应用部署在反向代理服务器(如Nginx)后,这个方法...

    java 获取计算机名与IP地址

    下面将详细介绍如何使用Java获取计算机名和IP地址。 首先,我们来看如何获取计算机名。计算机名通常指的是主机在网络中的标识符,可以通过`java.lang`包中的`InetAddress`类来获取。以下是一个简单的示例: ```...

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    例10.05 Socket客户端程序.rar_java socket _socket_socket 客户端_socket

    `host`是服务器的IP地址或域名,`port`是服务器上监听的端口号。 3. **获取输入/输出流**:一旦连接建立,可以使用`Socket`对象的`getInputStream()`和`getOutputStream()`方法获取输入流和输出流,分别用于从...

    jsp获取客户端IP地址的方法.docx

    对于使用Java Server Pages (JSP) 的开发者来说,了解如何高效地获取客户端IP地址至关重要。本文将详细介绍几种在JSP环境中获取客户端IP地址的有效方法,并提供实际的代码示例。 #### 二、获取客户端IP地址的重要性...

    获取访问者真实的IP地址

    3. **处理 `REMOTE_ADDR`**:如果以上两种方式都无法获取到有效的IP地址,则直接使用`request.getRemoteAddr()`方法获取客户端IP地址。需要注意的是,这种方式获取的可能是代理服务器的IP地址而非客户端的真实IP地址...

    java获取ip地址

    ### Java获取IP地址知识点解析 在本篇文章中,我们将深入探讨如何使用Java语言来获取IP地址。这是一项在网络编程中非常基础且重要的技能,能够帮助开发者了解客户端或服务器的网络位置信息。以下是对给定文件中的...

    获取用户真实IP地址

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

    java根据本地IP获取mac地址的方法

    此外,在获取客户端请求地址时,我们可以使用HttpServletRequest对象的getHeader()方法获取客户端的IP地址。我们可以使用"x-forwarded-for"、"Proxy-Client-IP"、"WL-Proxy-Client-IP"等header来获取客户端的IP地址...

    跨平台 获取本机IP/MAC地址,检测是否内网IP,字符串IP转换成Number地址

    本文将深入探讨如何在不同的操作系统上获取本机的IP和MAC地址,以及如何判断一个IP地址是否为内网IP,并将字符串形式的IP地址转换为数值表示。我们将主要关注以下几个知识点: 1. **跨平台获取本机IP地址**: 跨...

    java获取IP地址

    1. **获取客户端IP地址**: - 在传统的JSP页面中,可以通过`HttpServletRequest`的`getRemoteAddr()`方法直接获取客户端的IP地址。这适用于服务器直接与浏览器交互的情况。 - 对于JSF(JavaServer Faces)应用,...

    获取手机ip

    对于应用程序开发者而言,获取IP地址主要通过编程接口,例如Android中的`java.net.InetAddress`类。 在Android应用中,获取手机IP地址可以通过以下步骤实现: 1. **权限请求**: 在AndroidManifest.xml中添加`...

    用Java编程获得本机和服务器IP地址

    在Java编程中,获取本机和服务器的IP地址是一项常见的任务,这有助于建立网络连接、进行定位服务或者进行网络通信。下面将详细解释如何通过Java实现这个功能。 首先,我们需要了解IP地址的基本概念。IP地址...

    Java获取用户访问IP及地理位置的方法详解

    如果找不到,它会检查其他可能的代理服务器头,最后如果所有尝试都失败,就返回`request.getRemoteAddr()`,这是最直接获取客户端IP的方式,但可能在有代理的情况下返回代理服务器的IP。 获取到IP地址后,我们可以...

    tcp.rar_java socket 服务端_java tcp socket_服务端 客户端

    1. 创建`Socket`对象,指定服务器的IP地址和端口号,建立到服务器的连接。 2. 获取`Socket`的输入流和输出流。 3. 客户端向服务器发送请求,例如发送一段文本。 4. 通过输出流`write()`方法将数据写入网络,发送到...

    工具类-获取访问ip地址工具类,自用留存

    2. **HTTP请求头**:在Web应用中,服务器可以通过处理HTTP请求头来获取客户端的IP地址。通常,`X-Forwarded-For`头字段包含了经过代理服务器转发的原始IP,而`Remote-Addr`头则直接表示客户端的IP。在工具类中,可能...

    java ip 地址分析

    在Java编程语言中,处理和分析IP地址是一项常见的任务,特别是在网络编程和数据分析领域。IP地址(Internet Protocol address)是互联网上设备的唯一标识符,通常以点分十进制的形式表示,例如“192.168.1.1”。在...

    javaUDP实现服务器客户端大小写的转换

    3. **创建DatagramPacket**:将字节数组和服务器的IP地址及端口号封装到`DatagramPacket`中,准备发送。 4. **发送数据**:调用`DatagramSocket.send(DatagramPacket packet)`将数据报发送给服务器。 5. **接收响应*...

    java源码:Java Telnet客户端实例源码.zip

    1. **Socket编程**:Java的`java.net.Socket`类是进行TCP通信的基础,它提供了创建连接到特定IP地址和端口的能力。在Telnet客户端中,我们需要创建一个Socket对象,指定服务器的IP地址(如`127.0.0.1`或公网IP)和...

Global site tag (gtag.js) - Google Analytics