`
liudaoru
  • 浏览: 1575751 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

获取客户端IP地址的方法

    博客分类:
  • java
阅读更多
问题的现象是使用Request的getRemoteAddr()方法获取的都是局域网的IP地址,参考了一下付总的实现代码,又google了一下搞定了问题。
java 代码
  1. private final String getClientAddress(HttpServletRequest request) {   
  2.     String address = request.getHeader("X-Forwarded-For");   
  3.     if (address != null && StringUtil.isIPAddress(address)) {   
  4.         return address;   
  5.     }   
  6.     return request.getRemoteAddr();   
  7. }  

另外原因主要是Squid的使用:

参见:www.blogjava.net/Alpha/archive/2006/07/12/57764.aspx

在很多应用下都可能有需要将用户的真实IP记录下来,这时就要获得用户的真实IP地址,在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。

  这段时间在做IP统计的程序设计,由于服务器作了集群,使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.xxx.com/的URL时,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实IP。这是什么原因呢?

  这是反向代理的原因。经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。当我们访问http://www.xxx.com/index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问http://192.168.1.110:2046/index.jsp,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

分享到:
评论
1 楼 dyuan 2009-07-27  
X-Forwarded-For 客户端请求时,可以任务指定一个IP,那取出来的IP就是错误的了。

相关推荐

    java 获取客户端ip mac地址

    如果需要获取真实的客户端IP地址,还需要检查HTTP头部信息中的`X-Forwarded-For`字段。 #### 二、获取客户端 MAC 地址 获取客户端的MAC地址相对较为复杂,一般不推荐直接在Web应用中实现该功能。但在某些特定场景...

    JS简单获取客户端IP地址的方法【调用搜狐接口】

    本文实例讲述了JS简单获取客户端IP地址的方法。分享给大家供大家参考,具体如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>使用搜狐接口获取客户端IP地址</...

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

    它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至关重要。 首先,让我们详细了解一下`IpUtils`这个工具类。在Java中,获取IP地址通常涉及到`java.net`包中的类,如`InetAddress`。`...

    获取客户端IP地址-vs c#

    获取客户端IP地址 vs c#/获取客户端IP地址 vs c#

    java获取客户端ip及mac地址

    ### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位或者进行安全验证等场景下。Java 提供了多种方式来获取客户端的 IP 地址,其中...

    JS获取客户端IP地址、MAC和主机名的7个方法汇总

    ### JS获取客户端IP地址、MAC和主机名的7个方法详解 #### 一、使用JS获取客户端IP的方法 ##### 方法一:使用ActiveX获取IP(仅适用于IE浏览器) 这种方法依赖于`ActiveXObject`来实现,因此只能在允许运行ActiveX...

    JSP获取客户端IP地址浏览器版本操作系统.pdf

    获取客户端IP地址、浏览器版本和操作系统信息在JSP中的实现方法 在JSP中,获取客户端的IP地址、浏览器版本和操作系统信息是非常重要的。通过使用HttpServletRequest对象,我们可以获取到客户端的相关信息。 获取...

    asp.net_web_获取客户端IP和MAC地址

    总的来说,获取客户端IP地址在ASP.NET中相对简单,而获取MAC地址则涉及更复杂的网络环境和用户隐私问题,通常不直接在Web应用中操作。开发者应遵循最小权限原则和尊重用户隐私,避免不必要的数据收集。

    获取客户端IP地址所需Jar包

    首先,我们需要了解在Java Web应用中获取客户端IP地址的基本方法。通常,在Servlet环境下,可以通过HttpServletRequest对象的getRemoteAddr()方法来获取。然而,在某些情况下,如通过反向代理服务器(如Nginx、...

    .net获取客户端IP,Mac地址

    在.NET中,获取客户端IP地址通常通过HTTP请求的上下文来实现。当客户端发起请求时,服务器端可以通过以下方法获取: ```csharp using System.Net; // 获取客户端IP public string GetClientIP(HttpRequest request...

    .net获取客户端主机名和ip地址

    4. **Page.Request.UserHostAddress**:返回客户端IP地址。 ```csharp string clientIPAddress = Page.Request.UserHostAddress; ``` 这些方法简单易用,适用于大多数情况下的客户端信息获取。 #### 二、使用...

    Java获取客户端IP及Mac地址(同网段).rar

    在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...

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

    当请求经过反向代理时,这个字段会包含原始客户端IP地址的信息。以下是一个简单的示例代码: ```java public String getRealIP(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for");...

    golang 获取客户端IP

    集成各种获取方式,获取正确的IP

    Java获取客户端真实IP地址

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

    获取客户端IP地址

    获取客户端提交申请时的ip地址,例如用于微信支付的获取客户端ip,根据配置不不同,有可能ipv4或ipv6,当服务器在自己电脑上,做测试是,可以使用127.0.0.1替代localhost

    JS获取客户端IP地址及MAC地址(转)

    在JavaScript中,获取客户端IP地址和MAC地址是一个相对复杂的过程,因为JavaScript的浏览器安全限制不允许直接访问客户端的MAC地址。然而,我们可以通过一些间接的方法来获取客户端的IP地址。在这个场景下,`...

    java中获取客户端IP MAC信息

    可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!

    在xinetd环境下如何获取客户端IP地址

    由于`xinetd`环境下的服务器程序通常通过标准输入/输出流(`stdin`/`stdout`)与客户端进行通信,而非直接使用套接字接口,因此在这样的环境中获取客户端IP地址的方法也有所不同。本文将详细介绍在`xinetd`环境下...

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

    ### JSP 获取客户端IP地址的方法详解 #### 一、引言 在Web开发中,获取客户端的IP地址是一项常见的需求。这通常用于日志记录、地理位置定位、安全控制等多种应用场景。对于使用Java Server Pages (JSP) 的开发者来...

Global site tag (gtag.js) - Google Analytics