获取客户端IP地址的四种方式之间的差异

Any*_*are 1 c# asp.net http ip-address .net-3.5

问:

我需要知道以下几点之间的区别:

Request.ServerVariables["HTTP_X_FORWARDED_FOR"] ;


Request.ServerVariables["REMOTE_ADDR"];

System.Web.HttpContext.Current.Request.UserHostAddress;

System.Net.IPAddress[] strClientIPAddress = System.Net.Dns.GetHostAddresses(Environment.MachineName);
Run Code Online (Sandbox Code Playgroud)

我想获取客户端IP地址(访问该网站的用户),我对之前的方法感到困惑,哪一个更准确.

Waq*_*aja 6

我总是使用第三个选项来获取客户端(或用户)的IP地址.

System.Web.HttpContext.Current.Request.UserHostAddress;
Run Code Online (Sandbox Code Playgroud)

前两种方法也做同样的事情.

但是最后一个方法不返回客户端ip,它将返回托管站点的服务器ip.要调用此方法,您必须指定主机名或IP地址.但是,Environment.MachineName返回服务器名称,因此它将返回服务器的IP而不是用户的IP.

有关前两个选项的更多信息,我通过谷歌搜索找到差异,这里是