【问题标题】:How to grab Client System IP Address?如何获取客户端系统 IP 地址?
【发布时间】:2014-06-05 16:28:08
【问题描述】:

我想获取/跟踪客户端机器(请求机器或用户计算机)而不是服务器机器的 IP 地址。

我已经输入以下代码来获取/跟踪它正在工作的客户端机器的 IP 地址。

Request.ServerVariables.Get("REMOTE_HOST");

但它在那些互联网调制解调器直接与电脑连接的系统上工作

而且我还需要在那些互联网调制解调器不直接与电脑连接(通过路由器连接)的系统上工作。

【问题讨论】:

  • 您是否尝试过查看X-Forwarded-For HTTP 请求标头,以便获取请求链中防火墙和路由器的 IP 地址?正如其他答案所述,您将无法访问原始客户端的内部 IP 地址,但您应该能够获得发出请求的第一个面向公众的路由器的 IP 地址。

标签: c# asp.net .net


【解决方案1】:

您无法获取客户端的内部地址。这就是Network Address Translationfirewalls 的用途。我知道这是一个令人失望的答案,但在大多数情况下,您所问的根本不可能。

唯一的例外是如果您同时控制客户端计算机和服务器。例如,企业环境。然后,您可以编写一些工具,将这些信息提供给服务器。显然,让随机访问您网站的人在他们的机器上安装您的工具并不是一个真正可行的选择。

如果您提供有关您的环境的更多详细信息以及您想要这样做的原因,这可能会对您的问题有所帮助。

【讨论】:

    【解决方案2】:

    你真的不能那样做。此外,知道内部网络 IP 地址不会帮助您以任何方式访问它。

    【讨论】:

      【解决方案3】:

      尝试使用“HTTP_X_CLUSTER_CLIENT_IP”或“HTTP_X_FORWARDED_FOR”,这将返回逗号分隔的 IP 列表

      i.e.    Request.ServerVariables["HTTP_X_FORWARDED_FOR"]
      

      谢谢 苏雷什

      【讨论】:

        猜你喜欢
        • 2012-03-14
        • 2012-02-16
        • 2019-01-14
        • 1970-01-01
        • 2015-12-20
        • 2016-03-29
        • 2013-07-07
        • 2011-05-26
        • 2019-11-13
        相关资源
        最近更新 更多