雷达智富

首页 > 内容 > 程序笔记 > 正文

程序笔记

.NET C#获取客户端真实IP

2024-10-08 22

在 .NET 中获取客户端真实IP地址(而不是代理服务器的IP地址)可以通过 HttpContext.Current.Request.UserHostAddress 属性来实现。然而,在某些情况下,代理服务器可能会更改请求头信息,导致 UserHostAddress 返回代理服务器的IP地址而不是客户端的真实IP地址。

为了解决这个问题,你可以尝试从请求头中获取真实的客户端IP地址。通常,客户端真实IP地址会作为请求头的一部分,例如 X-Forwarded-For。不过,需要注意的是,这些请求头的名称可能因代理服务器而异。

以下是一个在 .NET Framework 中获取客户端真实IP地址的方法,假设客户端真实IP地址被传递到 X-Forwarded-For 请求头中:

using System.Web;

public class MyController : ApiController
{
    [HttpGet]
    public string GetRealClientIp()
    {
        string clientIp;

        // 尝试获取X-Real-IP请求头
        if (HttpContext.Current.Request.Headers["X-Forwarded-For"] != null)
        {
            clientIp = HttpContext.Current.Request.Headers["X-Forwarded-For"];
        }
        else
        {
            // 如果X-Forwarded-For请求头不存在,则使用UserHostAddress属性
            clientIp = HttpContext.Current.Request.UserHostAddress;
        }

        return $"Your Real IP Address is: {clientIp}";
    }
}

获取真实IP地址的方法可能因部署环境和网络配置而异。如果你使用的是反向代理或负载均衡器,请确保在代理服务器中正确配置了请求头传递,并在代码中使用正确的请求头名称来获取客户端真实IP地址。

更新于:10天前
赞一波!

文章评论

评论问答