采用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" ...
随机推荐
- 训练指南 UVALive - 3989(稳定婚姻问题)
ayout: post title: 训练指南 UVALive - 3989(稳定婚姻问题) author: "luowentaoaa" catalog: true mathjax ...
- 3、Flask实战第3天:url_for使用
我们之前是通过url来找到对应的视图函数 / => hello_world 那么url_for则是通过视图函数找到url hello world => / 演示如下 .. ...
- Xamarin XAML语言教程控件模板的模板绑定
Xamarin XAML语言教程控件模板的模板绑定 控件模板的模板绑定 为了可以轻松更改控件模板中控件上的属性值,可以在控件模板中实现模板绑定功能.模板绑定允许控件模板中的控件将数据绑定到公共属性上. ...
- [BZOJ1069][SCOI2007]最大土地面积(水平扫描法求凸包+旋转卡壳)
题意:在某块平面土地上有N个点,你可以选择其中的任意四个点,将这片土地围起来,当然,你希望这四个点围成. 的多边形面积最大.n<=2000. 先求凸包,再枚举对角线,随着对角线的斜率上升,另外两 ...
- 通过Roslyn动态生成程序集
之前写过篇文章如何通过Roslyn构建自己的C#脚本,今天本来打算测试一下这部分API在新的版本中的变化,结果发现它的脚本引擎找不到了,翻了一下官方文档,貌似说暂时性的移除了.便看了一下它动态生成程序 ...
- 排查java.lang.OutOfMemoryError: GC overhead limit exceeded
帮助客户排查java.lang.OutOfMemoryError: GC overhead limit exceeded错误记录: 具体网址: https://support.oracle.com/e ...
- Linux、CentOS系统下调整home和根分区大小
1.首先查看磁盘使用情况 [root@localhost ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 Filesystem Size Used Avail Use% Mounted ...
- 更改Windows用户文件夹(Users)默认位置到其它盘
一.把 C盘Users文件夹里的用户数据,迁移到D盘Users文件夹中 系统环境:windows7 1.mklink命令详解 C:>mklink 创建符号链接. MKLINK [[/D] | [ ...
- CentOS7下nrpe3.0安装(转)
本人菜鸟一枚,在学习nagios的时候碰到了很多问题,在网上找了很多相关的教程,都是老版本的,怎么装都不对,强迫症的我非要按装新版本,老版本的教程怎么搞都不行,只能自己研究了. 首先,下载nrpe3. ...
- HDFS 中向 DataNode 写入数据失败了怎么办
https://blog.csdn.net/HeatDeath/article/details/79012258 http://wenda.chinahadoop.cn/question/3323 h ...