我们常讨论说要取真实IP,不同场景所谓的真实IP含义不一样。
如你要根据客户端IP去判断客户所在区域,那么要记录客户的出口IP,这里的出口IP才是你所谓的真实IP。
如你要判断多个客户端是不是同一个,那么需要同时使用外网IP和内网IP才能区分:
因为若仅使用内网IP,不同的内网有相同的内网IP;
若仅使用外网IP,同一个内网的出口(外网IP)是同一个。
以上明白后,我们继续看:
HTTP请求记录的IP从内网到外网所有网关的IP都会记录在Header里
内网的IP依次记录在HTTP_X_FORWARDED_FOR,按,;或空格隔开。最外面的IP记录在REMOTE_ADDR。所以根据您的需求去取舍吧。
var REMOTE_ADDR = Request.ServerVariables["REMOTE_ADDR"];
var HTTP_X_FORWARDED_FOR = Request.ServerVariables["HTTP_X_FORWARDED_FOR"];