HttpServletRequest 获取ip地址
时间: 2023-08-07 14:38:43 浏览: 52
可以通过以下代码获取 HttpServletRequest 中的 IP 地址:
```
String ipAddress = request.getHeader("X-Forwarded-For");
if (ipAddress == null) {
ipAddress = request.getRemoteAddr();
}
```
在这里,我们首先尝试从请求头中获取 "X-Forwarded-For" 的值,如果不存在,则返回请求的远程地址。注意,如果你的应用程序部署在代理服务器后面,那么你需要将 "X-Forwarded-For" 作为请求头传递到应用程序中,否则它将返回代理服务器的 IP 地址而不是客户端的 IP 地址。
相关问题
HttpServletRequest获取IP
HttpServletRequest对象可以用来获取客户端的IP地址。一种常用的方法是通过调用HttpServletRequest对象的getRemoteAddr()方法来获取IP地址。这个方法返回一个字符串,表示客户端的IP地址。另外,还可以通过访问请求头来获取IP地址,一种常见的方式是通过调用HttpServletRequest对象的getHeader("x-forwarded-for")方法来获取IP地址。如果x-forwarded-for头字段不存在或为空,则可以尝试获取其他头字段,如Proxy-Client-IP和WL-Proxy-Client-IP,以获取IP地址。通过这些方法,我们可以方便地在Java Web应用中获取客户端的IP地址。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
HttpServletRequest获取ip
HttpServletRequest对象可以通过以下几种方法获取IP地址:
第一种方法:
```
public final static String getIpAddress(HttpServletRequest request) {
String ip = "";
try {
// 获取请求主机IP地址,如果通过代理进来,则透过防火墙获取真实IP地址
ip = request.getHeader("X-Forwarded-For");
if (ip != null && ip.length() > 0 && !"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (ip != null && ip.length() > 0 && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
ip= request.getRemoteAddr();
} catch (Exception e) {
// 异常处理
}
return ip;
}
```
第二种方法:
可以使用以下代码直接获取IP地址:
```
String ip = request.getRemoteAddr();
```