
現(xiàn)在很多網(wǎng)站用了CDN技術(shù),但采用CDN技術(shù)后,原來用來獲取訪問源的IP地址的程序已不能正常使用,它拿到的并不是訪問源的真實IP地址,而是CDN節(jié)點的IP地址,解決方法是對獲取IP的代碼作一點小改動。
在沒有使用CDN之前,我們?nèi)绻朐诰W(wǎng)站程序里拿到瀏覽者的IP,只需要讀取 REMOTE_ADDR 這個服務(wù)器變量就行了,而采用CDN后,REMOTE_ADDR 這個變量的值并不是訪問源的上網(wǎng)IP地址,而是CDN節(jié)點的IP地址,而用戶的真實上網(wǎng)IP是放在 HTTP_X_FORWARDED_FOR 這個變量里的,既然這樣,我們只需寫個兼容性的函數(shù)來獲取IP地址即可,代碼示例如下:
1. asp 的示例代碼
<%
Function GetClientIP()
Dim ip
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If(ip <> "") Then
Dim arr
arr = Split(ip,",")
GetClientIP = arr(0)
Else
GetClientIP = Request.ServerVariables("REMOTE_ADDR")
End if
End function
Response.Write("您的上網(wǎng)IP是:" + GetClientIP())
%>
2. asp.net 的示例代碼
<%@Page Language="C#"%>
3. php 的示例代碼
function GetClientIP(){
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
if($ip != ""){
$arr = explode(",",$ip);
return $arr[0];
}else{
return $_SERVER["REMOTE_ADDR"];
}
}
echo "您的上網(wǎng)IP是:".GetClientIP();
?>