[C#] 透過JavaScript 取得該使用者的IP位置

2013-01-05

 

最近有一個需求,是要從 Javascript  端去取得ip位置

我想想看邏輯應該是不太可能?

但是對方說,那為什麼Google Analytics  可以 當下我被問倒了..

看一下網路上面解法..

http://stackoverflow.com/questions/102605/can-i-lookup-the-ip-address-of-a-hostname-from-javascript

它們是去call 一個 http://jsonip.appspot.com/?callback=getip 網址

但是你實際連過去看..

2012-08-24_121401

但是有跡可循的就是透過Javascript 應該是不行的,它其實是透過讓User 去呼叫一個網頁,讓 Server端的程式去判斷,所以是可以自己用C# 取得後讓 AJAX 去呼叫..

首先我們必須透過C# 取得連線者的ip address..

 
 
 
public static string GetIPAddress()
{
    System.Web.HttpContext context = System.Web.HttpContext.Current;
    string sIPAddress = context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
    if (string.IsNullOrEmpty(sIPAddress))
    {
        return context.Request.ServerVariables["REMOTE_ADDR"];
    }
    else
    {
        string[] ipArray = sIPAddress.Split(new Char[] { ',' });
        return ipArray[0];
    }
}
 



參考網頁:


http://www.dotblogs.com.tw/jimmyyu/archive/2009/05/21/8493.aspx


http://stackoverflow.com/questions/735350/how-to-get-a-users-client-ip-address-in-asp-net



在本機執行起來



2012-08-24_121652



首先不要荒 我們佈署到網路上面..



2012-08-24_122046



這時候我們透過 JQuery AJAX 呼叫





<script type="text/javascript">
    
    function GetIPAddress() {
        var $res;
        $.ajax({
            type: "POST",
            url: "getip.aspx",
            async: false,
            cache: false,
            dataType: 'text',
            success: function (result) {
                $res = result;
            }
        });
        return $res;
    }
 
    alert(GetIPAddress()); </script>


結果:



2012-08-24_122504



網址如上 大家可以測試看看..


當麻許的超技八 2014 | Donma Hsu Design.