zoukankan      html  css  js  c++  java
  • 采用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();

     

  • 相关阅读:
    Selenium Webdriver元素定位的八种常用方式【转】
    python学习笔记(3)函数、参数、变量、递归
    Python学习总结
    Webdriver API (二)
    Webdriver API (一)
    解决Selenium弹出新页面无法定位元素问题(Unable to locate element)
    selenium之 定位以及切换frame(iframe)
    第一篇博客
    自制DTU
    DTU软硬件方案
  • 原文地址:https://www.cnblogs.com/mrma/p/3682372.html
Copyright © 2011-2022 走看看