获取 HTTP 客户端的 IP 地址
Get IP-address of HTTP client
我尝试获取向服务器发送 HTTP 请求的客户端的 IP 地址和端口。我使用了 HttpListenerRequest
class 的属性。 UserHostAddress
属性 returns 服务器的 ip 和端口,但不是客户端。 RemoteEndPoint
returns 一些 ip 和端口但它不是真正的客户端 ip(我知道客户端请求来自端口 1234)并且每次它 returns 不同的数据(我不知道为什么)。我该如何解决这个问题?也许我应该在客户端设置 http header From
?
非常感谢!
基于 SO answer, 我认为这会对您有所帮助...
protected void GetUser_IP()
{
string VisitorsIPAddr = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
{
VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress;
}
uip.Text = "Your IP is: " + VisitorsIPAddr;
}
我尝试获取向服务器发送 HTTP 请求的客户端的 IP 地址和端口。我使用了 HttpListenerRequest
class 的属性。 UserHostAddress
属性 returns 服务器的 ip 和端口,但不是客户端。 RemoteEndPoint
returns 一些 ip 和端口但它不是真正的客户端 ip(我知道客户端请求来自端口 1234)并且每次它 returns 不同的数据(我不知道为什么)。我该如何解决这个问题?也许我应该在客户端设置 http header From
?
非常感谢!
基于 SO answer, 我认为这会对您有所帮助...
protected void GetUser_IP()
{
string VisitorsIPAddr = string.Empty;
if (HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
VisitorsIPAddr = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();
}
else if (HttpContext.Current.Request.UserHostAddress.Length != 0)
{
VisitorsIPAddr = HttpContext.Current.Request.UserHostAddress;
}
uip.Text = "Your IP is: " + VisitorsIPAddr;
}