客戶支持
  首 頁 域名注冊  虛拟主機  營銷通  網站推廣  網站建設  企業郵局  優惠套餐  聯系我(wǒ)們  彙款方式  
網站首頁
客戶支持首頁
熱門文章排行
更多... 
 
熱門問題列表
首頁 -> 客戶支持
采用CDN後,如何在網站程序裏拿到客戶真實上網IP

查看次數:39898   更新時間:2013/10/28    

  現在很多網站用了CDN技術,但采用CDN技術後很多人會發現原來用來獲取浏覽者的上網IP的程序不能正常使用了,它拿到的并不是浏覽者的真實上網IP,而是CDN節點的IP,這怎麽辦呢?其實非常簡單,隻需要對獲取IP的代碼作一(yī)點小(xiǎo)改動就可以了。

  在沒有使用CDN前,我(wǒ)們如果想在網站程序裏拿到浏覽者的IP,隻需要讀取 REMOTE_ADDR 這個服務器變量就行了,而采用CDN後,REMOTE_ADDR 這個變量的值并不是浏覽者的上網IP,而是CDN節點的IP,而用戶的真實上網IP是放(fàng)在 HTTP_X_FORWARDED_FOR 這個變量裏的,既然這樣的話(huà),我(wǒ)們隻需要寫個兼容性的函數來獲取IP就行了,代碼如下(xià):

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. 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();
?>

3. asp.net 的示例代碼
<%@Page Language="C#"%>
<script runat='server'>
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());
}
</script>

[返 回]
上海陽桃網絡科技有限公司 vip.bangweb.cn (百川網絡)