【问题标题】:C# not showing the full IP addressC# 不显示完整的 IP 地址
【发布时间】:2015-10-22 21:15:25
【问题描述】:

我在使用 C# 获取完整 IP 地址时遇到了一些问题。当我通过单击按钮调用 C# Web 方法时,它会在 JavaScript 警报框中显示(或应该)IP 地址。我得到的不是 IP 地址,而是 ::1。我通过 Visual Studio 2015 社区运行它。这是我的代码:

 [WebMethod]
    public string getIPAddress()
    {
        // this method gets the ip address by using the server variables 
        // in C# to capture the data from the client
        HttpContext context = HttpContext.Current;
        string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

        if (!string.IsNullOrEmpty(ipAddress))
        {
            string[] addresses = ipAddress.Split(',');
            if (addresses.Length != 0)
            {
                return addresses[0];
            }
        }

        return context.Request.ServerVariables["REMOTE_ADDR"];
    }

以及处理按钮点击的方法:

   // display the ip address to the user if the button is clicked (display it via a javascript alert box)
    public void IpAddress(object sender, EventArgs e)
    {
        Data d = new Data();

        Response.Write("<script type=\"text/javascript\">alert('" + d.getIPAddress() + "');</script>");
    }

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 那是一个完整的IP地址;它是 IPv6 本地主机。
  • 有什么方法可以获取 IPv4 地址还是不可能?

标签: javascript c#


【解决方案1】:

这一行

string ipAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];

不一定会为您提供客户端的 IP 地址,具体取决于您的网络设置。 X_FORWARDED_FOR 标头由您和浏览器之间的代理服务器可选地添加。如果连接路径中没有(行为良好的)代理服务器,则可以列出许多 IP 地址,或者根本没有列出。实际标题的格式是

X-Forwarded-For: client1, proxy1, proxy2, ...

(source)

地址 ::1 是 IPv6 环回地址。如果不进一步了解您的网络架构,就不可能知道为什么标头填充有 ::1。

如果你只想获取客户端的IP地址,使用

Request.ServerVariables["REMOTE_ADDR"]

请注意,这不是 100% 可靠的,因为某些代理会替换它们自己的 IP 地址并且不会填充 X-Forwarded-For 标头(AOL 对此臭名昭著,但还有许多其他的示例)。

有什么方法可以获取 IPv4 地址还是不可能?

并非每个硬件都仍然分配有 IPv4 地址,但实际上,大多数仍然是。如果你能得到 IPv4 地址,那就是 127.0.0.1 (localhost)。

【讨论】:

  • 它从带有 Visual Studio Community 2015 的内置 IIS 服务器运行
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 2020-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多