【request获取用户请求ip】
1:request.getRemoteAddr()
2:如果请求的客户端使用了nginx 等反向代理发送请求的时候:就不能获取到真是的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。
3:解决:

public String getRemoteHost(javax.servlet.http.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.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;}【request获取用户请求ip】的更多相关文章
- Request获取用户真实IP(用作白名单过滤)
		
在Servlet里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,Nginx等反向代理软件就不能 ...
 - 根据HttpServletRequest获取用户真实IP地址
		
原因: 当我们通过request获取客户端IP时,自身服务器通常会为了保护信息或者负载均衡的目的,对自身服务器做反向代理.此时如果我们通过request.getRemoteAddr();可能获取到的是 ...
 - 如何根据HttpServletRequets获取用户真实IP地址
		
最近的一个项目的某个功能获取用户的ip地址,添加用户的系统使用记录. 我发现当我直接使用getRemoteAddr()方法从HttpServletRequet中获取用户的ip时,获取到的是服务器的ip ...
 - Nginx反向代理+Tomcat+Springmvc获取用户访问ip
		
Nginx+Tomcat+Springmvc获取用户访问ip 1.Nginx反向代理 修改Nginx配置文件 location / { ***********之前代码*******; proxy_se ...
 - java 获取用户真实ip
		
/** * 获取用户真实ip * @param request * @return */ public static String getIpAddr(HttpServletRequest reque ...
 - Java中使用HttpRequest获取用户真实IP地址端口
		
import javax.servlet.http.HttpServletRequest; /** * 自定义访问对象工具类 * * 获取对象的IP地址等信息 * @author X-rapido * ...
 - 在有nginx做反向代理时候,如何获取用户真实Ip信息
		
在获取用户的Ip地址时,不一定可以获取到用户真实的地址信息,这要看代理服务器的类型,代理服务器有普通匿名代理服务器,高匿代理服务器,像这种情况很难获取到用户真实的Ip地址 假如用户没有使用匿名代理服务 ...
 - 获取用户真实IP:(模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP)
		
模拟:客户端--F5--nginx--tomcat 后端获取用户真实IP 192.168.109.137 :nginx01(充当第一层代理==F5)192.168.109.138 :nginx02(二 ...
 - 服务端如何获取客户端请求IP地址
		
服务端获取客户端请求IP地址,常见的包括:x-forwarded-for.client-ip等请求头,以及remote_addr参数. 一.remote_addr.x-forwarded-for.cl ...
 
随机推荐
- 微信开发之c#下缓存jssdk的access_token
			
因为access_token的寿命只有7200秒,每日获取access_token存在上限,所以在获取access_token后,需要将其缓存起来. 首先建立一个模型 public class Acc ...
 - .net core i上 K8S(一)集群搭建
			
1.前言 以前搭建集群都是使用nginx反向代理,但现在我们有了更好的选择——K8S.我不打算一上来就讲K8S的知识点,因为知识点还是比较多,我打算先从搭建K8S集群讲起,我也是在搭建集群的过程中熟悉 ...
 - 如何为 smartraiden 贡献代码
			
如何为 smartRaiden 贡献代码 1.Fork 项目 登录 github 账号,并访问https://github.com/SmartMeshFoundation/SmartRaiden,然后 ...
 - HAOI2014 走出金字塔
			
题目链接:戳我 找规律. 不过为了方便,每次我们计算入口和某一个出口之间需要花费的体力值的时候,不妨把x较小的假设成塔顶,这样的话另一个就不需要分类讨论了. 详细请看代码 #include<io ...
 - django学习篇
			
https://www.cnblogs.com/alex3714/category/818260.html https://www.cnblogs.com/zhanghongfeng/catego ...
 - 初学python - 字典
			
字符串转为字典 import astline=input()linedict=ast.literal_eval(line) 遍历字典 for key in linedict: value=linedi ...
 - windbg符号路径设置
			
.sympath C:\Users\leoyin\Desktop\last;SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
 - powshel 控制目录文件权限
			
for($file=[IO.File]::OpenText("C:\Users\Administrator\Desktop\user_list.txt") ; !($file.En ...
 - OCP题库升级,iZ0-052新加的考题及答案整理-18
			
18.You want to Install Oracle 11g database software and create a database on ASM Immediately after t ...
 - SpringMVC 的初理解
			
项目中用到了jetty,springboot两种构建服务器的方式,jetty是一种嵌入式的方式,部署启动都很灵活,springboot最大的优点就是很多配置文件都自己集成好了,虽然用了这么多好的框架, ...