方法1

public static String getIp2(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip != null && !"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 && !"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}

方法2.

public static String getIp(HttpServletRequest request) {
String remoteAddr = request.getRemoteAddr();
String forwarded = request.getHeader("X-Forwarded-For");
String realIp = request.getHeader("X-Real-IP");

String ip = null;
if (realIp == null) {
if (forwarded == null) {
ip = remoteAddr;
} else {
ip = remoteAddr + "/" + forwarded;
}
} else {
if (realIp.equals(forwarded)) {
ip = realIp;
} else {
ip = realIp + "/" + forwarded.replaceAll(", " + realIp, "");
}
}
return ip;
}

方法3

public static String getIp3(HttpServletRequest request) {
String remoteAddr = request.getRemoteAddr();
String forwarded = request.getHeader("X-Forwarded-For");
String realIp = request.getHeader("X-Real-IP");

String ip = null;
if (realIp == null) {
if (forwarded == null) {
ip = remoteAddr;
} else {
ip = remoteAddr + "/" + forwarded.split(",")[0];
}
} else {
if (realIp.equals(forwarded)) {
ip = realIp;
} else {
if (forwarded != null) {
forwarded = forwarded.split(",")[0];
}
ip = realIp + "/" + forwarded;
}
}
return ip;
}

最新文章

  1. HTML5开发笔记:图片上传预览
  2. 如何创建一个Edge 浏览器扩展
  3. VisualSVN 4.0.11补丁原创发布
  4. struts2中用xml配置文件去验证填写信息
  5. 为hbase新增节点
  6. GPIO 配置之ODR, BSRR, BRR 详解
  7. .NET自动识别HttpWebResponse的编码及是否压缩
  8. 17款免费的Bootstrap后台管理模板集合
  9. 【转】iOS开发Xcode7真机调试教程
  10. HTML初识
  11. Linux上安装jdk,mysql
  12. 例:判断是不是自有属性hasOwnProperty方法
  13. js 判断当前操作系统是ios还是android还是电脑端
  14. 存储开头结尾使用begin tran,rollback tran作用?
  15. python 基本语句
  16. C#生成ZIP压缩包
  17. Contest2073 - 湖南多校对抗赛(2015.04.06)
  18. POJ 2250 Compromise【LCS】+输出路径
  19. spring mvc 跨域问题。。。解决
  20. dokuwiki工具栏添加换行回车快捷键与按钮

热门文章

  1. 多条件搜索优化sql
  2. 破解网页右键被禁止js
  3. nginx-fastcgi 第九章
  4. Shell 常用技巧
  5. [c/c++] programming之路(20)、字符串(一)
  6. opencv学习之路(22)、轮廓查找与绘制(一)
  7. LINQ to Entities 不识别方法“System.String get_Item(Int32)”,因此该方法无法转换为存储表达式。
  8. Mac配置Hadoop最详细过程
  9. sublime text 3 显示空格和Tab
  10. Listview自定义了子View导致listview的onitemclick事件无效