`
- 浏览:
379436 次
- 性别:
- 来自:
北京
-
我们知道,获取网页客户端的ip地址的方法是:request.getremoteaddr(),这种方法在大部分情况下都是有效的。但是在通过了apache,squid等反向代理软件就不能获取到客户端的真实ip地址了。如果使用了反向代理软件,用request.getremoteaddr()方法获取的ip地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实ip。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 ip,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的http头信息中,增加了x-forwarded-for信息。用以跟踪原有的客户端ip地址和原来客户端请求的服务器地址。所以将获取客户端ip的方法总结如下:
private String getClientIP(HttpServletRequest request) {
String ip = "";
try {
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.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
} catch (RuntimeException e) {
e.printStackTrace();
}
return ip;
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
以上代码首先获取当前的`FacesContext`实例,然后从中得到`HttpServletRequest`对象,并调用其`getRemoteAddr()`方法获取客户端的IP地址。 需要注意的是,`getRemoteAddr()`方法返回的是客户端的IP地址,如果客户端...
### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位或者进行安全验证等场景下。Java 提供了多种方式来获取客户端的 IP 地址,其中...
公司的域环境内,要求获取客户端的电脑名称,其实程序原开始,只是要求 获取客户端IP地址 后来演变成要求显示客户端的电脑名称。作为开发者,只有不停地实现客户的要求。 其实既然IP获取到了,那可以轻易以IP来获取...
总的来说,获取客户端IP地址在ASP.NET中相对简单,而获取MAC地址则涉及更复杂的网络环境和用户隐私问题,通常不直接在Web应用中操作。开发者应遵循最小权限原则和尊重用户隐私,避免不必要的数据收集。
// 获取客户端IP public string GetClientIP(HttpRequest request) { string ip = request.UserHostAddress; if (ip == "::1" || ip == "127.0.0.1") // 防止获取本地回环地址 { ip = GetLocalIpAddress(); // ...
当请求经过反向代理时,这个字段会包含原始客户端IP地址的信息。以下是一个简单的示例代码: ```java public String getRealIP(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for");...
获取客户端IP地址、浏览器版本和操作系统信息在JSP中的实现方法 在JSP中,获取客户端的IP地址、浏览器版本和操作系统信息是非常重要的。通过使用HttpServletRequest对象,我们可以获取到客户端的相关信息。 获取...
"获取客户端IP地址所需Jar包"这个主题,主要涉及的是在使用Apache Axis框架发布Web服务时,如何正确地获取客户端的网络地址。Apache Axis是一个开放源代码的SOAP栈,它提供了用于创建Web服务和客户端应用程序的工具...
它提供了便捷的方法来获取和处理IP地址,尤其对于获取客户端IP地址在Web应用中至关重要。 首先,让我们详细了解一下`IpUtils`这个工具类。在Java中,获取IP地址通常涉及到`java.net`包中的类,如`InetAddress`。`...
### JS获取客户端IP地址、MAC和主机名的7个方法详解 #### 一、使用JS获取客户端IP的方法 ##### 方法一:使用ActiveX获取IP(仅适用于IE浏览器) 这种方法依赖于`ActiveXObject`来实现,因此只能在允许运行ActiveX...
下面是一个典型的Java代码示例,用于获取客户端的真实IP: ```java public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request....
在ASP.NET开发中,获取客户端IP地址是一项常见的需求,这对于实现如访问统计、地理位置定位、安全防护等功能至关重要。本文将详细讲解如何在ASP.NET中获取客户端的IP地址,并结合提供的资源进行讨论。 首先,我们...
例如,以下代码片段演示了如何尽可能准确地获取客户端IP: ```php function get_client_ip() { $ip = ''; if (!empty($_SERVER['HTTP_CLIENT_IP'])) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif (!empty($...
在本文中,我们将深入探讨如何使用C#编程语言在Visual Studio 2005(VS2005)环境中获取客户端IP地址,并将其与IP标准库进行比对。这是一个非常实用的技术,尤其对于开发需要验证用户IP地址的应用程序或者需要记录...
在JavaScript中,获取客户端IP地址和MAC地址是一个相对复杂的过程,因为JavaScript的浏览器安全限制不允许直接访问客户端的MAC地址。然而,我们可以通过一些间接的方法来获取客户端的IP地址。在这个场景下,`...
下面是一个示例代码片段,展示了如何使用`getpeername()`函数来获取客户端IP地址: ```c #include #include #include #include int main() { int iRet, iLen; struct sockaddr_in peer; iLen = sizeof(peer...
javascript获取客户端网卡MAC地址和IP地址和计算机名
在ASP.NET中,获取客户端IP地址是通过`HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]`来实现的。然而,当用户通过代理服务器访问时,这个方法可能不会返回实际的客户端IP,而是返回代理服务器的IP。...
### ASP.NET 获取客户端IP和MAC地址的技术解析 #### 一、引言 在现代网络环境中,获取客户端的IP地址和MAC地址是许多应用场景中的基本需求之一。例如,在网络安全监控、日志记录、地理位置追踪等方面都有着重要的...
获取客户端IP地址相对简单,可以通过HttpRequest对象的UserHostAddress属性实现。以下是一个简单的示例: ```csharp protected void Page_Load(object sender, EventArgs e) { string clientIP = Request....