Web项目中得到访问者的真实ip

描述:最近要实现个功能是要记录管理员登录的真实ip,但在项目中如果直接使用request.getRemoteAddr()获得ip的话,获得的可能不是真实ip,是因为使用代理的一些原因,所以我们要自己找个方法,具体方法如下:

public class Utils {

	/**
* 获取ip
* @param request
* @return
*/
public static String getIp(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.getHeader("HTTP_CLIENT_IP");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getHeader("HTTP_X_FORWARDED_FOR");
}
if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
ip = request.getRemoteAddr();
}
return ip;
} }

这样就能去除代理的一些因素,得到真实的ip。

最新文章

  1. 带优先级的队列 - PHP实现
  2. docker confluence
  3. visual studio 插件开发
  4. SQLite&&SharedPreferences&&IO读写Sdcard学习笔记
  5. puppet_list
  6. linux下 /etc/profile、~/.bash_profile ~/.profile的执行过程
  7. LNK2019解决思路
  8. QCanvasItem介绍-QT3
  9. Object.keys、Object.getOwnPropertyNames区别
  10. 网站转变风格的css变化
  11. 转:vue项目如何刷新当前页面
  12. vue+elementUI表格列显示隐藏遇到bug
  13. 小甲鱼Python视频课后答案(第一讲)---仅记录学习
  14. using python read/write HBase data
  15. qlexpress
  16. logstash 如何处理 mongodb 导出来的 _id value数据。 how to custom fields of logstash by mongo mapreduce exported data.(example format: {_id:"xxx"} , value:{})
  17. 用 Qt Creator 开发非 Qt 的 C/C++ 程序
  18. c++之---初探重载操作符
  19. SpringBoot实现热加载方式
  20. Codeforces Round #520 (Div. 2) Solution

热门文章

  1. quartz的job怎么获取Spring上下文
  2. 错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
  3. kaptcha验证码插件使用与参数
  4. 遇见 TiDB
  5. day063 form 和modelform组件
  6. BFC清除浮动
  7. MYSQL-8.0.11-WINX64(免安装版)配置
  8. linux 服务发布脚本升级,远程发布,指定拉取远程dev,test等分支代码
  9. Hadoop学习笔记04_Hbase
  10. rod cutting