[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 網址
但是你實際連過去看..
但是有跡可循的就是透過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
在本機執行起來
首先不要荒 我們佈署到網路上面..
這時候我們透過 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>
結果:
網址如上 大家可以測試看看..