采用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[];
}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();
采用CDN加速后,如何在程序里获取用户IP地址的更多相关文章
- CDN 环境下获取用户IP方法
CDN 环境下获取用户IP方法 1 cdn 自定义header头的X-Real-IP,在后端使用$http_x_real_ip获得 proxy_set_header X-Real-IP $remote ...
- iOS- 如何从Boujour里解析出IP地址(sockaddr *的解析)?
1.前言 之前有网友跟我留言说到: 如何从Boujour 解析完的数组里解析出ip地址? 因为Boujour本身解析完毕之后的addresses是一个数组 那我们如何从这个数组里解析出我们需要的IP地 ...
- 【微信小程序】获取用户地理位置权限,二次请求授权,逆解析获取地址
摘要:微信小程序内获取用户地理位置信息授权,被拒绝后二次获取,获取权限后逆解析得到用户所在省市区等.. 场景:商城类小程序,在首页时需展示附近门店,即用户刚进入小程序时就需要获取到用户位置信息 ste ...
- 树莓派 Learning 002 装机后的必要操作 --- 07 设置静态IP地址
树莓派 装机后的必要操作 之 设置静态IP地址 我的树莓派型号:Raspberry Pi 2 Model B V1.1 装机系统:NOOBS v1.9.2 为了避免IP变来变去,我们将IP地址设置为静 ...
- nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId
nodejs+koa+uniapp实现微信小程序登陆获取用户手机号及openId 前言: 我准备用nodejs+koa+uniapp实现一款餐饮点单小程序,以及nodejs+koa+vue实现后端管理 ...
- 微信小程序之获取用户位置权限(拒绝后提醒)
微信小程序获取用户当前位置有三个方式: 1. wx.getLocation(多与wx.openLocation一起用) 获取当前的精度.纬度.速度.不需要授权.当type设置为gcj02 返回可用于w ...
- 关于微信小程序拒绝授权后,重新授权并获取用户信息
最近公司做了一些有关微信小程序的项目,涉及到授权获取用户基本信息,但是在拒绝授权之后就不会再出现授权窗口: 看网上也有很多人遇到了同样的问题,所以记录下来我的处理方法,供大家和自己学习和记录: 当调用 ...
- 使用Nginx后如何在web应用中获取用户ip及原理解释
当nginx作为反向代理功能时,转发请求到后端服务器 通常需要使用如下命令为转发的请求增加请求头 X-Forwarded-For proxy_set_header X-Forwarded-For &q ...
- 微信小程序-最新获取用户基本信息方案
如果只是单纯的展示用户信息,那么最简单的方案就是 文档中组件: <open-data type="groupName" open-gid="xxxxxx" ...
随机推荐
- luoguP2296 寻找道路
因为是出边与终点直接或间接相连,所以将边反向,从终边开始,将所有终边能到达的点都打上标记因为是最短路,所以不需要处理重边和自环,于是再跑最短路就好题目关键:路径上的所有点的出边所指向的点都直接或间接与 ...
- (寒假开黑gym)2018 USP Try-outs
layout: post title: (寒假开黑gym)2018 USP Try-outs author: "luowentaoaa" catalog: true tags: m ...
- RabbitMQ (五) 订阅者模式之分发模式 ( fanout )
前面讲到了简单队列和工作队列. 这两种队列有个非常明显的缺点 : 生产者发送的消息,只能进入到一个队列. 消息只能进入到一个队列就意味着消息只能被一个消费者消费. 尽管工作队列模式中,一个队列中的消息 ...
- NLP初试牛刀,NLTK入门第一篇
之前下载过一个PDF,书名是<用python进行自然语言处理>,挺有意思的,加上NLP和机器学习目前大热,想趁着暑假涉猎一下.于是开始了入门NLP之旅. 安装环境:Ubuntu14.04桌 ...
- Linux CentOS下Python+robot framework环境搭建
转载自:http://blog.sina.com.cn/s/blog_13cc013b50102vof1.html 操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.c ...
- Annotation的语法和使用
http://blog.csdn.net/cdl2008sky/article/details/6265742 (1) .<context:component-scan base-package ...
- [Contest20180405]抑制「超我」
古明地恋(koishi)和计算器(calculator)是好朋友.恋恋有一个神奇的计算器,可以进行两个数在模$2^n$意义下的加法运算.计算器上有一个寄存器,一开始寄存器中的数为$0$,每当恋恋输入一 ...
- Scala实战高手****第8课:零基础实战Scala最常用数据结构Map和Tuple及Spark源码鉴赏
本课内容1.Map和Tuple在Spark源码中的鉴赏2.Map和Tuple代码操作实战 ------------------------------------------------------- ...
- struts-2-spring-2-jpa-ajax
http://struts.apache.org/docs/struts-2-spring-2-jpa-ajax.html
- Step by Step 使用HTML5开发一个星际大战游戏(1)
本系列博文翻译自以下文章 http://blog.sklambert.com/html5-canvas-game-panning-a-background/ Languages: HTML5, Jav ...