1:request.getRemoteAddr()

2:如果请求的客户端使用了nginx 等反向代理发送请求的时候:就不能获取到真是的ip地址了:如:将http://192.168.1.110:2046/ 的URL反向代理为http://www.xxx.com/ 的URL时,用request.getRemoteAddr() 方法获取的IP地址是:127.0.0.1 或 192.168.1.110 ,而并不是客户端的真实IP。

3:解决:

public String getRemoteHost(javax.servlet.http.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.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
}

最新文章

  1. ABP源码分析十七:DTO 自动校验的实现
  2. java中的那些坑
  3. Memcache 详解
  4. Team Foundation Server
  5. xampp 提示 This setting can be configured in the file "httpd-xampp.conf".
  6. 硬盘类型和Linux的分区
  7. Web Api 控制器
  8. OpenCV 2 Computer Vision Application Programming Cookbook读书笔记
  9. Java高级软件工程师面试考纲
  10. tty/pts 相关指令
  11. A fatal error has been detected by the Java Runtime Environment:
  12. java中接口之间的继承
  13. [Android游戏开发]八款开源 Android 游戏引擎 (巨好的资源)
  14. 【翻译】为Ext JS和Sencha Touch开发人员准备的应用程序监测(App Inspector)
  15. sql server 索引阐述系列五 索引参数与碎片
  16. 在UnrealEngine中用Custom节点实现径向模糊
  17. 如何查看oracle用户具有的权限和角色
  18. 管道流_PipedInputStream与PipedOutputStream
  19. pyhanlp 共性分析与短语提取内容详解
  20. 判断浏览器是否IE(IE11可用)

热门文章

  1. WordCloud 简介
  2. C#操作Json数据
  3. Windows server 2008 R2安装MySQL 32位ODBC驱动!
  4. Centos系统优化
  5. 看完MJ讲解的单例后的个人总结
  6. mysql的联合索引的误解
  7. 使用cookie下次自动登录
  8. CSS3 文本溢出问题
  9. 基础篇:6)形位公差标注(GD&T标准)-总章
  10. [蓝桥杯][2016年第七届真题]路径之谜(dfs)