Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java获取请求的ip地址

作者:看悲伤的曲   发布日期:2025-06-24   浏览:90

import javax.servlet.http.HttpServletRequest;

public class IpUtil {

    /**
     * 获取请求的IP地址
     * @param request HttpServletRequest对象
     * @return 请求的IP地址
     */
    public static String getIpAddr(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.getRemoteAddr();
        }
        // 对于通过多个代理的情况,第一个IP为客户端真实IP,多个IP按照','分割
        if (ipAddress != null && ipAddress.length() > 15) { 
            if (ipAddress.indexOf(",") > 0) {
                ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
            }
        }
        return ipAddress;
    }
}

解释说明:

  1. 方法功能getIpAddr 方法用于从 HttpServletRequest 对象中获取客户端的真实 IP 地址。
  2. 处理逻辑
    • 首先尝试从 x-forwarded-for 头信息中获取 IP 地址。这个头信息通常由代理服务器设置,包含了客户端的真实 IP 地址。
    • 如果 x-forwarded-for 头信息为空或无效(例如值为 "unknown"),则继续尝试从其他常见的代理头信息 (Proxy-Client-IPWL-Proxy-Client-IP) 中获取 IP 地址。
    • 如果所有代理头信息都无效,则直接使用 request.getRemoteAddr() 获取 IP 地址。
  3. 多代理情况处理:如果 IP 地址字符串中包含多个 IP(以逗号分隔),则取第一个 IP 作为客户端的真实 IP 地址。

上一篇:protobuf java

下一篇:java 数组定义

大家都在看

java连接数据库的代码

ubuntu 卸载java

java sort用法

java collections.sort

java file类的方法

java 判断

java时间数据类型

java 时间加一天

java demo

java 截取

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站