首页 > 编程语言 >Java获取请求者的真实ip地址

Java获取请求者的真实ip地址

时间:2023-09-06 15:31:36浏览次数:33  
标签:Java ip IP地址 request equalsIgnoreCase 请求者 unknown null ipAddress

在Java中,可以通过HttpServletRequest对象的getRemoteAddr()方法获取请求者的真实IP地址。以下是一个简单的示例:

import javax.servlet.http.HttpServletRequest;


public String getRealIpAddress(HttpServletRequest request) {

    String ipAddress = request.getHeader("X-Forwarded-For");

    if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("Proxy-Client-IP");
    }

    if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("WL-Proxy-Client-IP");
    }

    if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("HTTP_CLIENT_IP");
    }

    if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getHeader("HTTP_X_FORWARDED_FOR");
    }

    if (ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) {
        ipAddress = request.getRemoteAddr();
    }

    return ipAddress;
}

在这个示例中,我们首先尝试从请求头中获取代理服务器转发的客户端IP地址(X-Forwarded-For),如果没有找到,则依次尝试获取其他可能包含客户端IP地址的请求头字段。如果所有请求头字段都没有找到客户端IP地址,最后使用HttpServletRequest对象的getRemoteAddr()方法获取请求者的IP地址。

标签:Java,ip,IP地址,request,equalsIgnoreCase,请求者,unknown,null,ipAddress
From: https://blog.51cto.com/u_16232375/7387768

相关文章

  • .NET 序列化生成 JavaScriptSerializer Poc
    dot.NET安全矩阵星球群有位师傅问起如何才能生成和ysoserial一样的JavaScriptSerializer序列化poc,同Json.NET一样序列化使用了ObjectDataProvider类,ObjectInstance属性绑定实例化的Process对象,这里没有使用MethodParameters属性传递参数,而是使用ProcessStartInfo类FileName和Argum......
  • Java 与 Jvm
    JVM是跨语言的平台我们平常所说的Java字节码指的是使用Java语言编写的程序,通过Java编译器编译而成的字节码文件,但是,Java虚拟机根本不关心运行在其内部的程序是何种语言编写的,它只关心字节码文件,也就是说Java虚拟机拥有语言无关性,并不会单纯的与Java语言终身绑定......
  • HashCat获取 RAR、ZIP、office密码
    RAR压缩密码首先获取rar文件的hash值,我们可以使用另一款哈希破解工具John提供的rar2john工具将rar文件里的hash提取出来。rar2john下载地址:http://openwall.info/wiki/_media/john/johntheripper-v1.8.0.12-jumbo-1-bleeding-e6214ceab-2018-02-07-win-x64.7z......
  • 《Java架构师的第一性原理》65系统架构之架构设计方法论
     4规范(Musthave)规范一:非数据服务做到无状态,避免同一集群内的节点间有功能差异;做到实例可以被随时停止、重启、增加,并且完全不依赖于本地磁盘或者内存规范二:服务具备优雅重启规范三:服务提供的API建议采用http\grpc,json\pb规范,不建议其他自定义格式规范四......
  • iptable 设置指定端口访问
    一、添加规则:设置禁止所有IP访问指定端口8075[root@zabbix_server~]#iptables-IINPUT-ptcp--dport8075-jDROP二、测试telnet [root@zabbix_server~]#telnet127.0.0.18075Trying127.0.0.1...telnet:connecttoaddress127.0.0.1:Connectiontimedout......
  • Socks5代理IP:保障跨境电商的网络安全
    在数字化时代,跨境电商已成为全球商业的重要一环。然而,随着其发展壮大,网络安全问题也逐渐浮出水面。为了确保跨境电商的安全和隐私,Socks5代理IP技术成为了一项不可或缺的工具。本文将深入探讨Socks5代理IP在跨境电商中的应用,以及如何保障网络安全。1.了解Socks5代理IP1.1什么是Soc......
  • Socks5代理IP:保障跨境电商的网络安全
    在数字化时代,跨境电商已成为全球商业的重要一环。然而,随着其发展壮大,网络安全问题也逐渐浮出水面。为了确保跨境电商的安全和隐私,Socks5代理IP技术成为了一项不可或缺的工具。本文将深入探讨Socks5代理IP在跨境电商中的应用,以及如何保障网络安全。1.了解Socks5代理IP1.1什么是Soc......
  • java~掩码的应用
    掩码是一串二进制代码对目标字段进行位与运算掩码掩码通常是一个用于屏蔽或隐藏某些位的值,以便在计算中只关注感兴趣的位。掩码通常是一个由二进制位组成的数,用于按位与操作,以清除或保留某些位的值。常见的用途包括:位操作和位掩码:在计算机编程中,位掩码用于执行位操作,如按位......
  • JavaScript Date UTC & GMT All In One
    JavaScriptDateUTC&GMTAllInOnejs时期时区转换UTC&GMTCoordinatedUniversalTime/协调世界时UTC是最主要的世界时间标准,其以原子时的秒长为基础,在时刻上尽量接近于格林威治标准时间。UTC实际上与GMT基本相同.https://zh.wikipedia.org/zh-hans/协调世......
  • 无涯教程-JavaScript - MONTH函数
    描述MONTH函数返回由序列号表示的日期的月份。月份以整数形式给出,范围从1(一月)到12(十二月)。语法MONTH(serial_number)争论Argument描述Required/OptionalSerial_number您要查找的月份的日期。应该使用DATE函数或其他公式或函数的输出输入日期。如果将日期作为......