JSP 获取真实IP地址的代码

网络编程 2025-03-13 17:32www.168986.cn编程入门

在JSP开发中,获取客户端IP地址的常见方法是使用`request.getRemoteAddr()`。当网站通过反向代理软件如Apache或Squid进行访问时,这种方法就无法获取到客户端的真实IP地址了。这是因为反向代理服务器位于客户端和服务器之间,使得服务器不能直接获取到客户端的IP。客户端的IP信息被包含在HTTP头信息中的“X-FORWARDED-FOR”字段里。

为了获取客户端的真实IP地址,我们需要从HTTP请求头中提取这个信息。以下是两种获取客户端真实IP地址的方法:

方法一:

```java

public String getRemortIP(HttpServletRequest request) {

if (request.getHeader("x-forwarded-for") == null) {

return request.getRemoteAddr();

}

return request.getHeader("x-forwarded-for");

}

```

方法二:

```java

public String getIpAddr(HttpServletRequest request) {

String 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.getRemoteAddr();

}

return ip;

}

```

当请求经过了多级反向代理时,“X-Forwarded-For”的值可能包含多个IP地址。在这种情况下,真实的客户端IP通常是该字段中的第一个非“unknown”的有效IP字符串。例如,在“X-Forwarded-For: 192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100”中,真实的客户端IP应该是192.168.1.110。在这个字段时,我们应当注意只获取第一个有效的IP地址。

上一篇:asp 数组 重复删除函数(脚本之家增强版) 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by