0

ASP.NET からクライアント IP アドレスを取得しています。しかし、一部のクライアント IP アドレスは 127.0.0.1 を受け取りました。なにが問題。有効なクライアント IP アドレスを取得する方法

私はこのコードを使用しています:

    public static string GetIP()
{
    string clientIp = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (!string.IsNullOrEmpty(clientIp))
    {
        string[] forwardedIps = clientIp.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
        clientIp = forwardedIps[forwardedIps.Length - 1];
    }

    if (string.IsNullOrEmpty(clientIp))
        clientIp = HttpContext.Current.Request.ServerVariables["HTTP_CLIENT_IP"];
    if (string.IsNullOrEmpty(clientIp))
        clientIp = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];

    return clientIp.ToString();
}
4

1 に答える 1

1

127.0.0.1 は localhost です。つまり、リクエストをホストしているのと同じマシンがリクエストを作成しています。

私の推測では、あなたが見ているのは、実際にはあなた自身のテストまたはデバッグですか?

Request.IsLocal() を調べる良い方法だと思います。

于 2013-01-16T13:50:17.520 に答える