采用CDN加速后,如何在程序里獲取用戶IP地址


現在很多網站用了CDN技術,但采用CDN技術后,原來用來獲取訪問源的IP地址的程序已不能正常使用,它拿到的並不是訪問源的真實IP地址,而是CDN節點的IP地址,解決方法是對獲取IP的代碼作一點小改動。
 
在沒有使用CDN之前,我們如果想在網站程序里拿到瀏覽者的IP,只需要讀取 REMOTE_ADDR 這個服務器變量就行了,而采用CDN后,REMOTE_ADDR 這個變量的值並不是訪問源的上網IP地址,而是CDN節點的IP地址,而用戶的真實上網IP是放在 HTTP_X_FORWARDED_FOR 這個變量里的,既然這樣,我們只需寫個兼容性的函數來獲取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("您的上網IP是:" + GetClientIP())
 
%>

 


 
 
 
2. asp.net 的示例代碼
 

private string GetClientIP(){
 
 string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "";
 
 if(ip  != ""){
 
  string[] arr = ip.Split(',');
 
  return arr[0];
 
 }else{
 
  return Request.ServerVariables["REMOTE_ADDR"];
 
 }
 
}
 
void Page_Load(){
 
 Response.Write("您的上網IP是:" + GetClientIP());
 
}

 


 
 
 
3. php 的示例代碼
 

function GetClientIP(){
 
 $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
 
 if($ip != ""){
 
  $arr = explode(",",$ip);
 
  return $arr[0];
 
 }else{
 
  return $_SERVER["REMOTE_ADDR"];
 
 }
 
}
 
echo "您的上網IP是:".GetClientIP();

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM