java获取客户访问IP
2017-07-04 13:18
423 查看
转自:http://blog.csdn.net/mydwr/article/details/9357187
/**
* 获取访问者IP
*
* 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
*
* 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
* 如果还不存在则调用Request .getRemoteAddr()。
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) throws Exception{
String ip = request.getHeader("X-Real-IP");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}
/**
* 获取访问者IP
*
* 在一般情况下使用Request.getRemoteAddr()即可,但是经过nginx等反向代理软件后,这个方法会失效。
*
* 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割),
* 如果还不存在则调用Request .getRemoteAddr()。
*
* @param request
* @return
*/
public static String getIpAddr(HttpServletRequest request) throws Exception{
String ip = request.getHeader("X-Real-IP");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
return ip;
}
ip = request.getHeader("X-Forwarded-For");
if (!StringUtils.isBlank(ip) && !"unknown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个IP值,第一个为真实IP。
int index = ip.indexOf(',');
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
} else {
return request.getRemoteAddr();
}
}
相关文章推荐
- java获取客户访问IP
- java获取客户访问IP
- nginx前端,tomcat后端服务器获取客户的真实IP,包括tomcat访问日志获取真实IP的配置
- java代码获取用户访问ip,绝大部分可行
- JAVA获取访问用户的客户端IP(适用于公网与局域网)
- java web在内网/局域网中访问,客户端主机ip获取
- 【java】服务器端获取用户访问的URL/用户IP/PC还是移动端
- JAVA获取访问用户的客户端IP(适用于公网与局域网)
- Java中获取访问者的ip和或获取访问路径
- JAVA访问ip138.com获取手机号段信息
- Java获取访问服务端的客户端IP和MAC地址
- java获取客户端访问ip
- java脚本开发根据客户IP获取IP的具体地理位置信息
- java获取用户访问的真实IP地址和代理IP
- java获取本机IP
- 用Java线程获取优异性能(II)——使用同步连载线程访问关键代码部份
- java获取客户端ip
- PHP获取访问用户IP
- Java 获取Windows 和 Linux 下 IP 机制
- java 获取本地的或者外网的IP