我在內網搭了兩個服務器,一個數據庫服務器,一個Web服務器。並且讓網管影射個外網IP給Web服務器,使得外網內網可以同時訪問。但這樣產生了個問題,Web服務器取數據是用內網的相對地址,這樣外網訪問時就得不到數據,只能顯示框架。要是把數據庫服務器也映射了的話,那麼內網就不能訪問了,這樣我就沒辦法調試了。如果把兩個服務器合為一個,那麼運行的速度就會受到影響,而現在老板也不想再往裡投錢,畢竟只是一個演示。而把兩台機子搬到實驗室的網絡機房直接接到外網上也可以解決,但是網絡機房是封閉的,有門禁卡,這樣我就沒辦法經常進去修改。
仔細想了一下,覺得做個判斷應該可以解決這個問題,只要判斷訪問的是內網IP還是外網IP,依據判斷來進行對應的操作
查了查資料發現用JS不錯,因為JS 獲取的 IP 有個優點就是它獲取的是本機設置的 IP,如果計算機通過局域網上網,那麼它獲得的就是計算機的局域網 IP,而不像 ASP 中 Request 獲取的是計算機連接到互聯網的 IP。
代碼(是從別人那抄來的,不過可以參考一下 :) )
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>JS獲取客戶端IP</title>
</head>
<body>
<script type="text/javascript" language="javascript">
<!--
function GetLocalIPAddress()
{
var obj = null;
var rslt = "";
try
{
obj = new ActiveXObject("rcbdyctl.Setting");
rslt = obj.GetIPAddress;
obj = null;
}
catch(e)
{
//異常發生
}
return rslt;
}
document.write("你的IP是:" + GetLocalIPAddress());
//-->
</script>
</body>
</html>
據說在使用中可能會出現警告,不過這只是測試,應該不礙事的,呵呵 :)