在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squi...
- public String getRemortIP(HttpServletRequest request) {
- if (request.getHeader("x-forwarded-for") == null) {
- return request.getRemoteAddr();
- }
- return request.getHeader("x-forwarded-for");
- }
可是当我访问http://www.xxx.com/index.jsp/ 时,返回的IP地址始终是unknown,也并不是如上所示的127.0.0.1 或 192.168.1.110 了,而我访问http://192.168.1.110:2046/index.jsp 时,则能返回客户端的真实IP地址,写了个方法去验证。原因出在了Squid上。squid.conf 的配制文件 forwarded_for 项默认是为on,如果 forwarded_for 设成了 off 则:X-Forwarded-For: unknown
于是可得出获得客户端真实IP地址的方法二:
- public String getIpAddr(HttpServletRequest request) {
- String ip = request.getHeader( " x-forwarded-for " );
- if (ip == null || ip.length() == 0 || " unknown " .equalsIgnoreCase(ip)) {
- ip = request.getHeader( " Proxy-Client-IP " );
- }
- if (ip == null || ip.length() == 0 || " unknown " .equalsIgnoreCase(ip)) {
- ip = request.getHeader( " WL-Proxy-Client-IP " );
- }
- if (ip == null || ip.length() == 0 || " unknown " .equalsIgnoreCase(ip)) {
- ip = request.getRemoteAddr();
- }
- return ip;
- }
可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串Ip值,究竟哪个才是真正的用户端的真实IP呢?
答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。
如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实IP为: 192.168.1.110
说明:按这种方法不一定100%准,网上很多人提到要准确的话必须做一个客户端空间,如applet。
<script type="text/javascript"></script>
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的。但是在通过了Apache,Squi...相关推荐
- 获取客户端真实IP地址
Java-Web获取客户端真实IP: 发生的场景:服务器端接收客户端请求的时候,一般需要进行签名验证,客户端IP限定等情况,在进行客户端IP限定的时候,需要首先获取该真实的IP. 一般分为两种情况: ...
- 获取客户端的IP地址
#region public static string GetClientIP() 获取客户端的IP地址/// <summary>/// 获取客户端的IP地址/// </summa ...
- 使用JS获取客户端的IP地址
使用JS获取客户端的IP地址 搜狐IP地址查询接口(可设置编码):https://pv.sohu.com/cityjson?ie=utf-8 简单使用: <script src="ht ...
- php如何获取客户端请求ip地址的方法
php如何获取客户端请求ip地址的方法 获取客户端ip地址的函数 获取客户端ip地址的函数 function getip(){$ip = false;if (!empty($_SERVER[" ...
- java获取客户端的IP地址工具类
java获取客户端的IP地址工具类 import java.net.InetAddress; import java.net.UnknownHostException;import javax.ser ...
- PHP获取客户端真实IP地址的方法
php获取客户端IP地址有四种方法,这五种方法分别为 1 2 3 4 REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_VIA REMOTE_A ...
- java获取客户端请求IP地址 获取公网ip
这几天搞了用java获取ip地址,由于测试方法不对,一直没有成功,昨天终于想通了并不是方法不对,而是我的测试方法不对,下面这个方法,完全可以得到客户端的公网ip地址 但是在测试的时候注意:我用的是we ...
- asp.net如何获取客户端真实IP地址
目前网上流行的所谓"取真实IP地址"的方法,都有bug,没有考虑到多层透明代理的情况. 多数代码类似: string IpAddress = (HttpContext.Curren ...
- 如何使用JavaScript获取客户端的IP地址?
我需要以某种方式使用JavaScript检索客户端的IP地址: 没有服务器端代码,甚至没有SSI. 但是,我不反对使用免费的第三方脚本/服务. #1楼 在您的页面中包含以下代码: <script ...
最新文章
- ASP.NET MVC 重点教程一周年版 第九回 HtmlHelper 【转】
- 中序非递归遍历二叉树
- Oracle Goldengate OGG 11g与各操作系统及数据库版本的兼容列表
- time模块 random模块
- mysql 优化设计库_数据库优化设计与SQL优化
- POJ1611-嫌犯【图论,并查集】
- 电脑小写字母怎么切换_苹果电脑双系统如何切换?苹果电脑双系统切换方法
- 初识C语言学习笔记 入门
- 每日英语Daily English
- 汇编学习软件推荐 - 汇编金手指
- mysql将毫秒转换为小时_将毫秒转换为天小时分钟
- 多线程_线程插队_join()方法与锁的释放
- Android学习日记(yzy):显示application并调用
- 机器学习分类光谱数据
- Windows下DOS窗口修改编码
- 去跨国公司还是去创业公司?
- 微信企业号用户验证php,身份验证
- sanic入门(一)
- 以下python注释代码中_以下Python注释代码,不正确的是()_学小易找答案
- 轻松进行SOLIDWORKS基础绘图
热门文章
- python怎么分行读取txt文件_python怎么读取txt文件内容
- 教你如何识别DWG文件版本
- 纯css实现坤坤经典动作-“铁山靠”
- javaScript能做什么
- 深度学习-MTCNN网络结构详解
- 学习scala-hello-world!
- 科研快报 | 三代测序技术-海水微生物态,助力海水微生态及微生物基因组研究
- 苹果交管局反馈信曝光 首次官方披露自动驾驶相关计划
- Masonry介绍与使用实践:快速上手Autolayout
- Think PHP crud,ThinkPHP教程_PHP框架之ThinkPHP(八)【CRUD與連貫操作】