c#中serverdariables缺少HTTP_X_FORWARDED_FOR

tho*_*lau 3 c# asp.net ip

我想获得ClientIPaddress但是当我打电话给Request.ServerVariables["HTTP_X_FORWARDED_FOR"]我时总是得到NULL.

检查后Servervariables我注意到HTTP_X_FORWARDED_FOR的列表中没有选项列表.

任何人都知道这是如何可能的以及如何解决?或者这个选项不在列表中并且我遗漏了一些东西是正常的.

提前致谢

dwt*_*.ts 9

Request.ServerVariables["HTTP_X_FORWARDED_FOR"]如果请求是由代理转发的,则只有一个值.通常,您将通过使用获取客户端IP Request.ServerVariables["REMOTE_ADDR"].

  • 好吧,如果不涉及代理,标头将永远不会出现。如果您正在调试,您很可能在 localhost 上请求,因此不会通过任何类型的代理发出请求。如果可以,您可以将 Cloudflare 用于您的域或子域之一。他们甚至会向传入的请求添加更多的标头...... (2认同)

小智 5

public string GetIPAddress()
{
    System.Web.HttpContext context = System.Web.HttpContext.Current;
    string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

    if (!string.IsNullOrEmpty(ipAddress))
    {
        string[] addresses = ipAddress.Split(',');
        if (addresses.Length != 0)
        {
            return addresses[0];
        }
    }

    return context.Request.ServerVariables["REMOTE_ADDR"];
}
Run Code Online (Sandbox Code Playgroud)

这个方法可能对你有用。