【问题标题】:I want to try to check the IP using ServerVariables["REMOTE_ADDR"] but it keeps return 127.0.0.1我想尝试使用 ServerVariables["REMOTE_ADDR"] 检查 IP,但它一直返回 127.0.0.1
【发布时间】:2012-05-11 21:26:20
【问题描述】:
我想尝试测试当前的 IP 地址以找到当前国家
所以我试试这段代码...
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
但它总是返回 127.0.0.1'
是否有任何其他代码可以让我在互联网上获取我的 IP 地址,例如 61.90.25.10
而不是本地的。
【问题讨论】:
标签:
c#
asp.net
ip-address
【解决方案1】:
HttpContext.Current.Request.UserHostAddress;
或
HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
要获取机器的 IP 地址而不是代理,请使用以下代码
HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
但是当您离线使用此应用程序时,您将始终收到您 PC 的 IP 地址,因为这是服务器将看到的 IP,换句话说,您不会离开路由器并重新连接到服务器上,因此您的外部 IP 不会被使用:
如果您在在线运行的服务器上测试您的应用程序并尝试打印出来:
Response.Write("IP Address:");
Response.Write("IP: " + HttpContext.Current.Request.UserHostAddress);
Response.Write("IP1: " + HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
Response.Write("IP2: " + HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
您将看到您拥有的公共 ip,如果您在到达您的 PC 之前使用反向代理,如 cloudflare,请注意确保使用 HTTP_X_FORWARDED_FOR 否则您可以使用 remote_addr 或 userhostaddress。