当前位置: 首页 > news >正文

java获取真实ip地址

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

获取真实ip地址的java代码如下:

/**
     * 获取 真实的IP 
     * 
     */
    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;
    }

如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串Ip值,究竟哪个才是真正的用户端的真实IP呢?

  答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。

  如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实IP为: 192.168.1.110

转载于:https://my.oschina.net/u/1054538/blog/680984

相关文章:

  • 简单查询(1)
  • 详解Zoosk千万用户实时通信背后的开源技术[转]
  • 【转】jvm 内存模型及内存调优
  • UESTC 75 The Queen's New Necklaces
  • 冯·若依曼体系结构
  • MySQL学习总结(二)数据库以及表的基本操作
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • Swift 中的尾递归和蹦床
  • 关于学习了《构建之法》的若干存在疑惑的问题
  • spring 整合 struts
  • open-falcon+grafana出图
  • C语言应用-飞机游戏
  • 第二阶段冲刺第八天
  • Servlet与JSP的区别
  • swift学习笔记-UI篇之UIImageView
  • Hexo+码云+git快速搭建免费的静态Blog
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java多线程(4):使用线程池执行定时任务
  • js对象的深浅拷贝
  • js作用域和this的理解
  • Netty 框架总结「ChannelHandler 及 EventLoop」
  • vue 个人积累(使用工具,组件)
  • 观察者模式实现非直接耦合
  • 前端每日实战:61# 视频演示如何用纯 CSS 创作一只咖啡壶
  • 前端之Sass/Scss实战笔记
  • 算法-图和图算法
  • 译米田引理
  • 优秀架构师必须掌握的架构思维
  • 阿里云ACE认证之理解CDN技术
  • #NOIP 2014# day.1 T2 联合权值
  • (9)YOLO-Pose:使用对象关键点相似性损失增强多人姿态估计的增强版YOLO
  • (九)信息融合方式简介
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (强烈推荐)移动端音视频从零到上手(上)
  • (算法)N皇后问题
  • (一)Linux+Windows下安装ffmpeg
  • (一一四)第九章编程练习
  • (转)全文检索技术学习(三)——Lucene支持中文分词
  • (转)四层和七层负载均衡的区别
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .apk文件,IIS不支持下载解决
  • .NET NPOI导出Excel详解
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • .net分布式压力测试工具(Beetle.DT)
  • @javax.ws.rs Webservice注解
  • @media screen 针对不同移动设备
  • @RequestParam详解
  • @Responsebody与@RequestBody
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [ vulhub漏洞复现篇 ] Apache Flink目录遍历(CVE-2020-17519)
  • [android] 手机卫士黑名单功能(ListView优化)
  • [C#]winform制作仪表盘好用的表盘控件和使用方法
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [C/C++]数据结构 栈和队列()
  • [CC-FNCS]Chef and Churu