- 浏览: 210993 次
- 性别:
- 来自: 深圳
-
文章分类
最新评论
-
上官车月:
13shu 写道 有何高见?
getServletContext()接口解析(收藏) -
13shu:
getServletContext()接口解析(收藏)
通常通过request.getRemoteAddr()
取得客户端的IP地址,做鉴权和校验,逻辑没问题,那么肯定request.getRemoteAddr()出了问题,google下,发现有人遇到类似的问题。
最终定位为request.getRemoteAddr()这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。
如果使用了反向代理软件,将http://192.168.1.110:2046/
的URL反向代理为http://www.xxx.com/
的URL时,用request.getRemoteAddr()
方法获取的IP地址是:127.0.0.1 或 192.168.1.110,而并不是客户端的真实IP。
经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR
信息用以跟踪原有的客户端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;
- }
转载于:http://johnnyhg.iteye.com/blog/225370
发表评论
-
apache http日志文件按天生成
2014-06-18 20:10 3559Linux系统配置方法: 将其改为 ErrorLog & ... -
Java各种文件下载处理
2013-05-07 13:19 1179public HttpServletResponse do ... -
Java读取Properties文件
2013-01-31 15:31 1067/** * * * @ ... -
判断当前时间是否在限制时间段之内
2013-01-30 19:06 4662/** * 判断当前时间是否在限制时间段之内(是: ... -
Ubuntu 手动安装jdk6
2013-01-17 19:04 11511. 手动安装jdk6 首先, ... -
[Java]读取文件方法大全
2012-12-20 19:59 9061、按字节读取文件内容2、按字符读取文件内容3、按行读取文件内 ... -
Tomcat远程调试
2012-11-22 16:25 957第一步、配置远程tomcat 1、在windows系统中: ... -
项目中整体上中文乱码
2012-11-01 15:40 1164搞一个S2SH项目,在运行时整体上项目中文在IE浏览器 ... -
Lucene 教程
2012-10-15 09:41 943Lucene是apache组织的一个用jav ... -
native2ascii 工具使用
2012-08-31 15:39 1007native2ascii.exe 是Java ... -
struts2 upload
2012-08-29 12:46 1008所需架包: commons-fileupload-1.2.1 ... -
Axis2 教程
2012-08-28 10:01 1083来源:http://itemdetail.iteye.co ... -
个人学习收集
2012-08-14 14:59 886JAVA编程思想[第四版].pdf ssh学习笔记 ... -
weblogic session丢失
2012-08-06 19:54 3814在处理app为多服务时,iframe跨域存在sess ... -
iframe跨域session丢失
2012-07-04 16:12 1771问题根源: IE6/IE7支持的P3P(Platfo ... -
注册Tomcat服务为系统服务
2012-06-20 16:51 8201将解压版的Tomcat服务注册为系统服务之后,就不用 ... -
eclipse调试时鼠标移动到变量上不显示值的问题
2012-06-20 09:01 1619今天同事问一问题,就说在eclipse中调试时,鼠标移动到 ... -
Publishing failed with multiple errors 异常
2012-06-06 16:17 22334Publishing failed with multiple ... -
Js获取当前日期时间及其它操作
2012-06-06 14:29 1126Js获取当前日期时间 ... -
Java发送http请求
2012-06-01 15:29 2535结合网络资源,整理Java调用http请求调用接口 等 方法。 ...
相关推荐
### Java获取客户端真实IP地址详解 在Web开发中,获取客户端的真实IP地址是一个常见的需求,尤其是在需要进行地理位置定位、安全审计、流量统计等场景下。然而,在存在反向代理服务器的环境中,传统的`request....
当请求经过反向代理时,这个字段会包含原始客户端IP地址的信息。以下是一个简单的示例代码: ```java public String getRealIP(HttpServletRequest request) { String ip = request.getHeader("x-forwarded-for");...
如果需要获取真实的客户端IP地址,还需要检查HTTP头部信息中的`X-Forwarded-For`字段。 #### 二、获取客户端 MAC 地址 获取客户端的MAC地址相对较为复杂,一般不推荐直接在Web应用中实现该功能。但在某些特定场景...
2. **获取客户端IP地址**:在Web应用中,服务器需要区分每个客户端,`IpUtils`可能会有方法处理`HttpServletRequest`对象,从HTTP请求头(如`X-Forwarded-For`或`RemoteAddr`)中解析出真实客户端的IP地址。...
在上面的代码中,首先通过x-forwarded-for请求头获取客户端IP地址,然后将其分割以获取第一个IP地址,哪个就是客户端真实IP地址。 此外,还有其他方法可以获取客户端真实IP地址,例如通过Proxy-Client-IP、WL-Proxy...
这里提供了一个简单的示例,用于在 Windows 系统中通过 IP 地址获取 MAC 地址: ```java public String getMACAddress(String ip) { String str = ""; String macAddress = ""; try { Process p = Runtime....
在这种情况下,原始的客户端IP地址信息被记录在HTTP请求头中的`X-Forwarded-For`字段里。 #### 三、解决方案 为了准确获取客户端的真实IP地址,我们可以采用以下几种方法: ##### 方法一:基本实现 首先,检查...
在标题“java socket nginx tcp转发 用户真实IP测试”中,主要探讨的是如何在Java的Socket连接中,通过Nginx的TCP转发获取到实际用户的IP地址。 在描述中提到的博客文章,很可能是详细介绍了这个问题的解决方案。...
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能...用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。
System.out.println("客户端IP地址为:" + ipAddress); } } ``` 在上述代码中,`HttpServletRequest`的`getRemoteAddr()`方法用于获取客户端的IP地址。然而,如果应用部署在反向代理服务器(如Nginx)后,这个方法...
但是当请求经过反向代理时,代理服务器会将原始的客户端IP地址信息附加在HTTP请求头中,通常使用`X-Forwarded-For`字段来传递这些信息。因此,为了获得客户端的真实IP地址,我们需要从HTTP请求头中读取这个字段的...
JAVA获取客户端IP地址和MAC地址 在JAVA中获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。下面我们将详细介绍如何获取客户端的IP地址和MAC地址。 一、获取客户端IP地址 在...
获取本地IP地址,获取本地Host名称,获取Linux下的IP地址,获取用户真实IP地址,get/post请求 相应的工具类
获取客户端IP地址、浏览器版本和操作系统信息在JSP中的实现方法 在JSP中,获取客户端的IP地址、浏览器版本和操作系统信息是非常重要的。通过使用HttpServletRequest对象,我们可以获取到客户端的相关信息。 获取...
在Java中,我们可以使用request.getRemoteAddr()方法来获取客户端的IP地址,但是这种方法有一个缺陷,就是当我们使用了nginx反向服务器后,在web端使用request.getRemoteAddr()方法取得的是nginx的地址,而不是用户...
最简单的方式是通过`HttpServletRequest`对象调用`getRemoteAddr()`方法来获取客户端IP地址。这个方法在大多数情况下能够正确地返回客户端的IP地址,但在客户端请求通过了反向代理服务器(例如Apache或Squid)的情况...
获取用户请求IP地址 根据IP地址获取mac地址
首先,我们需要了解在Java Web应用中获取客户端IP地址的基本方法。通常,在Servlet环境下,可以通过HttpServletRequest对象的getRemoteAddr()方法来获取。然而,在某些情况下,如通过反向代理服务器(如Nginx、...
此时,仅依靠`getRemoteAddr()`可能无法获取到真实的客户端IP地址。为解决这一问题,可以通过检查`x-forwarded-for`字段获取到一个IP地址列表,并从中选取最后一个作为客户端真实IP地址。 ```java if (ip != null &...
但在实际应用场景中,由于多种因素(如NAT转换、负载均衡器或代理服务器的存在),服务器接收到的客户端IP地址可能并不是客户端真实发出请求的IP地址。因此,准确地获取客户端真实IP地址变得尤为重要。 #### 二、...