首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >c#中的服务器变量中缺少HTTP_X_FORWARDED_FOR

c#中的服务器变量中缺少HTTP_X_FORWARDED_FOR
EN

Stack Overflow用户
提问于 2013-07-08 15:37:55
回答 4查看 27.6K关注 0票数 5

我想得到ClientIPaddress,但当我调用Request.ServerVariables["HTTP_X_FORWARDED_FOR"]时,我总是得到NULL

在检查Servervariables列表后,我注意到HTTP_X_FORWARDED_FOR不在选项列表中。

有谁知道这是如何实现的,以及如何解决?或者,这个选项不在列表中而我遗漏了一些东西,这是正常的吗?

提前感谢

EN

回答 4

Stack Overflow用户

发布于 2013-07-08 15:44:51

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

票数 10
EN

Stack Overflow用户

发布于 2017-02-09 21:01:31

代码语言:javascript
运行
复制
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"];
}

这个方法可能对你有用。

票数 5
EN

Stack Overflow用户

发布于 2013-11-27 21:45:28

请尝试以下操作:

代码语言:javascript
运行
复制
public static string GetUserIP() {   
    var ip = ( HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null
          && HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != "" )
         ? HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
         : HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
    if (ip.Contains( "," ))
        ip = ip.Split( ',' ).First();
    return ip.Trim();
}

可在此处找到:

http://mycodepad.wordpress.com/2013/04/26/c-getting-a-user-ip-behind-a-proxy-http_x_forwarded_for/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17521277

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档