JSP 获取真实IP地址的代码
在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地址。
编程语言
- JSP 获取真实IP地址的代码
- asp 数组 重复删除函数(脚本之家增强版)
- flex tree自动显示横向滚动条实现代码
- js装饰设计模式学习心得
- php 批量添加多行文本框textarea一行一个
- BootStrap 表单控件之单选按钮水平排列
- SQL Server 2012 安装与启动图文教程
- javascript实现简单的页面右下角提示信息框
- JavaScript中的object转换函数toString()与valueOf()介绍
- SQL Server查询数据库中表使用空间信息实现脚本
- deepin 2014系统下安装mysql数据库的方法步骤
- JavaScript实现获取用户单击body中所有A标签内容的
- SQLServer 中的死锁说明
- 自编函数解决pathinfo()函数处理中文问题
- php返回当前日期或者指定日期是周几
- JDK 1.5之Generics