代码如下自取:

import lombok.extern.slf4j.Slf4j;import javax.servlet.http.HttpServletRequest;
import java.net.InetAddress;
import java.net.UnknownHostException;/*** @Title 获取客户端ip地址类* @Author YangWanJie* @Date 2021/6/30 16:08* @versioin V1.0**/
@Slf4j
public class IpUtil {/*** @Title 获取用户IP地址* 两种可能性* 一:客户端未经过代理,直接访问服务器端;* 二:客户端通过多级代理,最终到达服务器端;* @Author YangWanJie* @Date 2020/1/20 10:57* @versioin V1.0**/public static String getIp(HttpServletRequest request) {// 反向代理时获取真实ipString ip = request.getHeader("X-Forwarded-For");if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {// 多次反向代理后会有多个ip值,第一个ip才是真实ipif (ip.indexOf(",") > 0) {ip = ip.split(",")[0];}}//Proxy-Client-IP/WL- Proxy-Client-IP :这个一般是经过apache http服务器的请求才会有,用apache http做代理时一般会加上Proxy-Client-IP请求头,而WL-Proxy-Client-IP是他的weblogic插件加上的头。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");}//nginx代理一般会加上此请求头if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Real-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();if ("127.0.0.1".equals(ip) || "0:0:0:0:0:0:0:1".equals(ip)) {//根据网卡取本机配置的IPInetAddress inet = null;try {inet = InetAddress.getLocalHost();ip = inet.getHostAddress();} catch (UnknownHostException e) {log.error("x-forwarded-for:{},Proxy-Client-IP:{},WL-Proxy-Client-IP:{},HTTP_CLIENT_IP:{},X-Real-IP:{},错误信息:{}", request.getHeader("X-Forwarded-For"), request.getHeader("Proxy-Client-IP"), request.getHeader("WL-Proxy-Client-IP"), request.getHeader("HTTP_CLIENT_IP"), request.getHeader("X-Real-IP"), e.getMessage());}}}return ip;}
}

java获取客户端IP地址工具类相关推荐

  1. Ngnix笔记proxy_set_header设置X-Real-IP(Java获取客户端IP地址)

    这里是如果没设置这个头,在Nignx反向代理后,Java web那边获取的地址,基本上是Nginx那个应用所处的IP地址! proxy_set_header X-Real-IP $remote_add ...

  2. JAVA获取主机IP地址

    JAVA获取主机IP地址 java 获取主机IP地址工具类 import org.springframework.web.context.request.RequestAttributes; impo ...

  3. java获取客户端的IP地址工具类

    java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...

  4. Service获取客户端IP地址(java)

    Java代码 <strong>1.基于jax-ws开发的webservice获取客户端ip的方法[在代理类XXXDelegate添加如下代码]:</strong> import ...

  5. 如何在PHP中获取客户端IP地址[重复]

    本文翻译自:How to get the client IP address in PHP [duplicate] This question already has an answer here: ...

  6. springboot 获取客户端ip_JAVA如何获取客户端IP地址和MAC地址

    本文介绍了JAVA如何获取客户端IP地址和MAC地址 ,分享给大家,具体如下: 1.获取客户端IP地址 public String getIp(HttpServletRequest request) ...

  7. 获取项目服务器ip,java获取服务器ip地址

    java获取服务器ip地址 内容精选 换一换 如果IP经过NAT/WAF,则只能获取到NAT/WAF转化后的IP地址,无法获取到NAT/WAF前的IP地址.如果客户端为容器,只能获取到容器所在主机的I ...

  8. php获取ip几种方法区别,php获取客户端IP地址的几种方法

    php获取客户端IP地址的几种方法 阅读php获取客户端IP地址的几种方法, 1:来看看代码: echo "(1)浏览当前页面的用户的 IP 地址为:"; echo $_SERVE ...

  9. thinkphp 获取客户端ip地址方法

    /*** 获取客户端IP地址* @param integer $type 返回类型 0 返回IP地址 1 返回IPV4地址数字* @param boolean $adv 是否进行高级模式获取(有可能被 ...

最新文章

  1. WinCE CEDDK之Bus操作函数
  2. 详细易懂的二叉树遍历(先中后)
  3. mysql中两次排序_MySQL中的两种排序方式: index和filesort
  4. 瑞立视:厚积薄发且具有“工匠精神”的中国品牌
  5. PLSQL 日期格式修改
  6. ubuntu修改文件夹权限
  7. malloc开辟的空间在哪一个区间_专业指南 | 室内设计和空间设计区别,到底该选哪一个?...
  8. windows下python 自动截图功能
  9. 第四章:函数式数据处理(一)-----流(Stream)
  10. Spring Cloud Hystrix服务容错 (学习总结)
  11. [转]游戏多开的原理
  12. STC51控制的超声波HY-SRF05测距、红外接收小车代码
  13. Android资源管理中的SharedLibrary和Dynamic Reference-------之AssetManager的处理(四)
  14. NSLayoutConstraint动态修改multiplier或constant
  15. PG学习笔记(1)—— 主从复制:流复制
  16. progress的高级过程调用以及全局变量
  17. 24位行业精英:2018,区块链教会我最重要的一件事 |链捕手
  18. 传奇开服需要多少钱?传奇开服技术要学多久?
  19. html中word wrap,HTML的断行word-wrap: break-word 和 word-break: break-all 到底有啥区别?
  20. Oracle 同义词synonym创建和删除

热门文章

  1. 西安财经大学信息计算机科学怎咋,中清研 -西安财经大学信息学院
  2. 今天给同学写5个数据结构算法的题...感觉很有价值的几个题..感兴趣的坐下。。
  3. php简单的日历代码,PHP实现的简单日历代码
  4. React ref的基本使用
  5. CLOUDXNS 使用体验
  6. LSTM 的几种改进方案
  7. Android 自动亮度
  8. Springboot+Ajax工具类的使用
  9. 第一章:数字移动通信基础知识
  10. 超好玩的太空沙盒生存类游戏:星球流浪者中文版(支持big sur)