我知道REMOTE_ADDR返回路由器的IP地址,而不是客户端用户的机器。 HTTP_X_FORWARDED_FOR,因为当客户端用户位于代理服务器后面时,他的机器的IP地址将代理服务器的IP地址附加到客户端计算机的IP地址。如果客户端计算机位于许多代理服务器后面,则会附加所有服务器标识。但我只想要客户端机器地址。
如何获得?
string ipaddress;
ipaddress = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (ipaddress == "" || ipaddress == null)
ipaddress = Request.ServerVariables["REMOTE_ADDR"];
以下代码是否会返回客户端或本地计算机的ipaddress?
ipaddress = Dns.GetHostName(); // Retrieve the Name of HOST
IPHostEntry ipEntry = System.Net.Dns.GetHostEntry(ipaddress);
IPAddress[] addr = ipEntry.AddressList;
string ip = addr[2].ToString();
或者我应该选择
private string GetUserIP()
{
string ipList = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (!string.IsNullOrEmpty(ipList))
{
return ipList.Split(',')[0];
}
return Request.ServerVariables["REMOTE_ADDR"];
}
获取第一个?