首页 > 其他分享 >获取真实ip

获取真实ip

时间:2023-06-14 17:33:08浏览次数:38  
标签:真实 获取 ip getHeader request equalsIgnoreCase unknown null

参考自

https://www.cnblogs.com/damoblog/p/16194665.html

常规获取真实ip方式

private 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.getRemoteAddr();
        }
        return ip;
    }

经过多层转发

ps: 多层nginx + gateway

private String getIp(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        //多次反向代理后会有多个ip值,第一个ip才是真实ip
        int index = ip.indexOf(",");
        if (index != -1) {
            ip = ip.substring(0, index);
        }
        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;
    }

标签:真实,获取,ip,getHeader,request,equalsIgnoreCase,unknown,null
From: https://www.cnblogs.com/xy20211005/p/17480904.html

相关文章

  • Runtime.getRuntime().exec("ipconfig") 的用法
    ​ `Runtime.getRuntime().exec()`是Java中的一个方法,可以在Java程序中执行外部程序。这个方法返回一个`Process`对象,可以用于控制和查看执行的外部程序。`exec()`方法有多个重载版本,可以传递不同的参数来控制执行的外部程序。例如:importjava.io.BufferedReader;import......
  • Runtime.getRuntime().exec("ipconfig") 的用法
    ​ `Runtime.getRuntime().exec()`是Java中的一个方法,可以在Java程序中执行外部程序。这个方法返回一个`Process`对象,可以用于控制和查看执行的外部程序。`exec()`方法有多个重载版本,可以传递不同的参数来控制执行的外部程序。例如:importjava.io.BufferedReader;import......
  • k8s-IPV6升级(3)
    1.逐节点手动升级步骤21.1master节点升级到1.21.5步骤#备份apiserver、kube-scheduler和controller-managercp-r/apps/conf/kubernetes/manifests//tmp/1.1.1更新管理平面组件至1.21.5逐节点更新master节点的kube-apiserver修改如下参数vi/apps/conf/kubernetes......
  • npm install报错[email protected] postinstall: `node scripts/build.js`
    [email protected]: nodescripts/build.js解决方法:npmconfigsetsass_binary_site=https://npm.taobao.org/mirrors/node-sassnpminstall  ......
  • java正则多个IP从中找出来匹配结果
    packagecom.yunfatong.evidence.utils;importcn.hutool.core.collection.CollUtil;importcn.hutool.poi.excel.ExcelBase;importcn.hutool.poi.excel.ExcelUtil;importcn.hutool.poi.excel.ExcelWriter;importcn.hutool.poi.excel.StyleSet;importorg.apache.po......
  • 通过使用动态ip解决网络连接问题
     互联网的使用已经成为我们生活中不可或缺的一种生活方式。但是,有时候我们会遇到网络连接问题,如IP地址冲突、网络瘫痪等等。这种情况往往会影响我们的工作,现在我们一般使用动态ip地址来解决这些问题。  一、什么是动态ip地址  动态IP地址是由互联网服务提供商临时分配给......
  • 使用iPhone相机和OpenCV来完成3D重建(第三部分)
    正文字数:4509 阅读时长:2分钟欢迎来到本教程的第三部分,也是最后一部分关于立体重建的教程。Postedby OmarPadierna url: https://medium.com/@omar.ps16/stereo-3d-reconstruction-with-opencv-using-an-iphone-camera-part-iii-95460d3eddf0快速回顾:在第一部分中,我们简要介......
  • 使用iPhone相机和OpenCV来完成3D重建(第一部分)
    正文字数:1497 阅读时长:2分钟这个教程将带你使用自己的手机摄像头和图片实现从零开始到点云。Postedby OmarPadierna https://becominghuman.ai/stereo-3d-reconstruction-with-opencv-using-an-iphone-camera-part-i-c013907d1ab5这是一个由3部分组成的系列文章。我注意到,其......
  • JavaScript 动态编辑元素某属性值(例如:元素div的class属性)
    元素<divclass="h5-box-search-itemusimglistnodisplay"id="usimglist"></div>(满足条件)动态更新div元素的class属性值://获取目标容器letusimglist=document.getElementById('usimglist');//获取其class的属性值letclassinfo=usimglist.ge......
  • 2021百度之星- 复赛 Add or Multiply 1 第二类斯特林数计数
    AddorMultiply1本质上这个题目中乘法和加法没有任何区别因为加法乘法均满足交换律不妨考虑乘法最后分成了k块每块内部没有顺序但是块之间有顺序有顺序共有m个乘法操作这样的方案数是\(s(m,k)k!\)这个时候要求k-1个空隙必须有加法但是开头和结尾可以有也可以没有这个......