获取客户端用户真实ip
2011-03-18 14:48
471 查看
通常通过Request.ServerVariables("REMOTE_ADDR") 或 Request.UserHostAddress 来获取客户端ip。如果在客户端使用了代理服务器或在服务器前加了反向代理服务器,获取的就是代理服务器的地址了,无法获取用户真实ip。怎么获取呢?
public static string RemoteIp()
{
string realRemoteIP = "";
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
realRemoteIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0];
}
if (string.IsNullOrEmpty(realRemoteIP))
{
realRemoteIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return realRemoteIP;
}
为什么用上述方法可以呢?因为很多代理会自动在HTTP_X_FORWARDED_FOR字段信息中加入对方最后一层TCP/IP信息。
所以使用该方法的前提是,要自动把ip信息加入到HTTP_X_FORWARDED_FOR字段中,否则用该方法仍然是获取不到的。
顺便贴个获取服务器自身ip的方法吧!如下:
public static string HostIp()
{
return HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"];
}
public static string RemoteIp()
{
string realRemoteIP = "";
if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
{
realRemoteIP = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].Split(',')[0];
}
if (string.IsNullOrEmpty(realRemoteIP))
{
realRemoteIP = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
}
return realRemoteIP;
}
为什么用上述方法可以呢?因为很多代理会自动在HTTP_X_FORWARDED_FOR字段信息中加入对方最后一层TCP/IP信息。
所以使用该方法的前提是,要自动把ip信息加入到HTTP_X_FORWARDED_FOR字段中,否则用该方法仍然是获取不到的。
顺便贴个获取服务器自身ip的方法吧!如下:
public static string HostIp()
{
return HttpContext.Current.Request.ServerVariables["LOCAL_ADDR"];
}
相关文章推荐
- 使用PHP获取用户客户端真实IP的解决方案
- PHP获取用户客户端真实IP的解决方案
- 服务器如何获取客户端用户的(城市)地址[获得真实IP再获得城市]
- 使用PHP获取用户客户端真实IP的解决方案
- java 获取客户端用户真实ip
- 多层nginx代理tomcat获取客户端真实ip
- net中获取客户端真实ip
- java实现穿透代理获取客户端真实ip .
- Java Web 获取客户端真实IP
- Nginx 负载均衡 后端服务器获取前端用户真实IP
- 获取客户端真实IP
- php 获取用户真实ip
- nginx反向代理后应用程序如何获取客户端真实IP?
- PHP如何获取客户端真实IP
- php获取客户端真实IP
- 【Tomcat】-- Tomcat + Nginx反向代理https和wss并解决获取客户端真实IP、域名、协议、端口
- php获取客户端真实ip
- PHP获取用户真实 IP , 淘宝IP接口获得ip地理位置
- nginx后的tomcat获取真实用户ip
- 用于获取因用cdn无法获取用户真实IP的方法