`
javaEEdevelop
  • 浏览: 876484 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

import java.net.UnknownHostException;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebServiceContext;
import javax.xml.ws.handler.MessageContext;

@Resource
private WebServiceContext wsContext;  
/**
* 获取请求来的ips 
* @param request
* @return
*/
public String getIpAddr() {
String ipAddress = null;
MessageContext mc = wsContext.getMessageContext();
HttpServletRequest request = (HttpServletRequest) (mc
		.get(mc.SERVLET_REQUEST));
ipAddress = request.getHeader("x-forwarded-for");
if (ipAddress == null || ipAddress.length() == 0
		|| "unknown".equalsIgnoreCase(ipAddress)) {
	ipAddress = request.getHeader("Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0
		|| "unknown".equalsIgnoreCase(ipAddress)) {
	ipAddress = request.getHeader("WL-Proxy-Client-IP");
}
if (ipAddress == null || ipAddress.length() == 0
		|| "unknown".equalsIgnoreCase(ipAddress)) {
	ipAddress = request.getRemoteAddr();
		
	//这里主要是获取本机的ip,可有可无
	if (ipAddress.equals("127.0.0.1")
			|| ipAddress.endsWith("0:0:0:0: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(","));
	}
}
 //或者这样也行,对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割  
//return ipAddress!=null&&!"".equals(ipAddress)?ipAddress.split(",")[0]:null;       
return ipAddress;
}

 

 

主要转载于(http://www.iteye.com/topic/1124070)

分享到:
评论

相关推荐

    Java获取客户端真实IP地址

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

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

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

    java 获取客户端ip mac地址

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

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

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

    Java获取客户端真实IP地址过程解析

    在上面的代码中,首先通过x-forwarded-for请求头获取客户端IP地址,然后将其分割以获取第一个IP地址,哪个就是客户端真实IP地址。 此外,还有其他方法可以获取客户端真实IP地址,例如通过Proxy-Client-IP、WL-Proxy...

    java获取客户端ip及mac地址

    这里提供了一个简单的示例,用于在 Windows 系统中通过 IP 地址获取 MAC 地址: ```java public String getMACAddress(String ip) { String str = ""; String macAddress = ""; try { Process p = Runtime....

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

    在这种情况下,原始的客户端IP地址信息被记录在HTTP请求头中的`X-Forwarded-For`字段里。 #### 三、解决方案 为了准确获取客户端的真实IP地址,我们可以采用以下几种方法: ##### 方法一:基本实现 首先,检查...

    java socket 用户真实IP测试

    在标题“java socket nginx tcp转发 用户真实IP测试”中,主要探讨的是如何在Java的Socket连接中,通过Nginx的TCP转发获取到实际用户的IP地址。 在描述中提到的博客文章,很可能是详细介绍了这个问题的解决方案。...

    Java正确获取客户端真实IP方法整理.docx

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能...用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

    用Java来获取访问者真实的IP地址

    但是当请求经过反向代理时,代理服务器会将原始的客户端IP地址信息附加在HTTP请求头中,通常使用`X-Forwarded-For`字段来传递这些信息。因此,为了获得客户端的真实IP地址,我们需要从HTTP请求头中读取这个字段的...

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

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

    JAVA如何获取客户端IP地址和MAC地址

    JAVA获取客户端IP地址和MAC地址 在JAVA中获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。下面我们将详细介绍如何获取客户端的IP地址和MAC地址。 一、获取客户端IP地址 在...

    IP地址HTTP请求工具类

    获取本地IP地址,获取本地Host名称,获取Linux下的IP地址,获取用户真实IP地址,get/post请求 相应的工具类

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

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

    Java面试之如何获取客户端真实IP

    在Java中,我们可以使用request.getRemoteAddr()方法来获取客户端的IP地址,但是这种方法有一个缺陷,就是当我们使用了nginx反向服务器后,在web端使用request.getRemoteAddr()方法取得的是nginx的地址,而不是用户...

    java中通过request获取IP以及MAC地址.java

    获取用户请求IP地址 根据IP地址获取mac地址

    java中怎么获取客户端的真实的IP

    最简单的方式是通过`HttpServletRequest`对象调用`getRemoteAddr()`方法来获取客户端IP地址。这个方法在大多数情况下能够正确地返回客户端的IP地址,但在客户端请求通过了反向代理服务器(例如Apache或Squid)的情况...

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

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

    java获取用户真实ip

    此时,仅依靠`getRemoteAddr()`可能无法获取到真实的客户端IP地址。为解决这一问题,可以通过检查`x-forwarded-for`字段获取到一个IP地址列表,并从中选取最后一个作为客户端真实IP地址。 ```java if (ip != null &...

    获取访问者真实的IP地址

    但在实际应用场景中,由于多种因素(如NAT转换、负载均衡器或代理服务器的存在),服务器接收到的客户端IP地址可能并不是客户端真实发出请求的IP地址。因此,准确地获取客户端真实IP地址变得尤为重要。 #### 二、...

Global site tag (gtag.js) - Google Analytics