客户支持
  首 页 域名注册  虚拟主机  营销通  IDC业务  网站推广  网站建设  企业邮局  优惠套餐  联系我们  汇款方式  
网站首页
客户支持首页
热门文章排行
更多... 
 
热门问题列表
首页 -> 客户支持
采用CDN后,如何在网站程序里拿到客户真实上网IP

查看次数:233682   更新时间:2013/10/28    

  现在很多网站用了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. 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>

[返 回]
佛山市亿动网络有限公司 www.72e.net (云指)