我在內網搭了兩台伺服器,一台資料庫伺服器,一台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>
據說在使用時可能會出現警告,不過這只是測試,應該不礙事的,呵呵 :)