【问题标题】: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。

【讨论】:

    猜你喜欢
    • 2013-10-19
    • 2013-03-10
    • 2012-07-02
    • 2016-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-28
    • 2021-07-01
    • 2017-03-19
    相关资源
    最近更新 更多