X-Forwarded-For 跟 X-R…
来源:互联网 发布:pp助手 mac 编辑:程序博客网 时间:2024/05/18 11:16
一般来说,X-Forwarded-For是用于记录代理信息的,每经过一级代理(匿名代理除外),代理服务器都会把这次请求的来源IP追加在X-Forwarded-For中(由于最后一次代理还没有被经过,所以还没有记录下来,就是下面文章中说的第三层代理)
来自4.4.4.4的一个请求,header包含这样一行
X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3
代表 请求由1.1.1.1发出,经过三层代理,第一层是2.2.2.2,第二层是3.3.3.3,而本次请求的来源IP地址:4.4.4.4是 第三层代理
而X-Real-IP,一般只记录真实发出请求的客户端IP,上面的例子,如果配置了X-Read-IP,将会是
X-Real-IP: 1.1.1.1
所以 ,如果只有一层代理,这两个头的值就是一样的
来自4.4.4.4的一个请求,header包含这样一行
X-Forwarded-For: 1.1.1.1, 2.2.2.2, 3.3.3.3
代表 请求由1.1.1.1发出,经过三层代理,第一层是2.2.2.2,第二层是3.3.3.3,而本次请求的来源IP地址:4.4.4.4是
而X-Real-IP,一般只记录真实发出请求的客户端IP,上面的例子,如果配置了X-Read-IP,将会是
X-Real-IP: 1.1.1.1
所以 ,如果只有一层代理,这两个头的值就是一样的
public static String getIp(HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (StringUtils.isNotEmpty(ip) &&!"unKnown".equalsIgnoreCase(ip)) {
// 多次反向代理后会有多个ip值,第一个ip才是真实ip
int index = ip.indexOf(",");
if (index != -1) {
return ip.substring(0, index);
} else {
return ip;
}
}
ip = request.getHeader("X-Real-IP");
if (StringUtils.isNotEmpty(ip) &&!"unKnown".equalsIgnoreCase(ip)) {
return ip;
}
return request.getRemoteAddr();
}
阅读全文
0 0
- X-Forwarded-For 跟 X-R…
- X-Forwarded-For跟X-Read-IP的区别
- X-Forwarded-For介绍
- 伪造 X-Forwarded-For
- X-Forwarded-For
- x-forwarded-for
- X-Forwarded-For
- 造 X-Forwarded-For
- 伪造 X-Forwarded-For
- 挖掘x-forwarded-for注入
- squid X-Forwarded-For 作用
- Java for Mac OS X Lion
- cocos2d-x 使用 cocostu…
- cocos2d-x 使用 cocostu…
- 关于matlab代码复制到office(for X…
- 对于一个N x M 的…
- 【Mac OS X Yosemi…
- leetcode:Pow(x, n) + N-Quee…
- Maven讲解之 什么是Maven
- websocket与html5实现批量大文件逐…
- hessian 客户端报警告:Hessi…
- springMVC 几种页面跳转方式
- Promise 对象
- X-Forwarded-For 跟 X-R…
- volatile和synchronized的区别与联…
- RichEdit对ole 对象的相关支持总结
- html5 css 的 水平和垂直居中
- 浏览器文字取消选中效果noselect(…
- stm32 高级定时器
- Jmeter 将 JDBC Request 查询结果作为下一个接口参数方法
- linux磁盘挂载分区以及创建用户指…
- Linux基础知识之挂载详解(mount,u…