展开

关键词

Nginx反向代理后如何获取客户端真实IP

Nginx反向代理后如何获取客户端真实IP 获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。 如果使用了反向代理,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。 后台代码: /** * 获取客户端ip * * @param request * @return */ public static String getRemoteAddr ip : request.getRemoteAddr(); } } 发表时间:2019-09-19 本站文章除注明转载/出处外,皆为作者原创,欢迎转载,但未经作者同意必须保留此段声明

18530

APM - 零侵入监控Http服务

private final Method _getMethod; private final Method _getHeader; private final Method _getRemoteAddr "); _getHeader = targetClass.getMethod("getHeader", String.class); _getRemoteAddr = targetClass.getMethod("getRemoteAddr"); _getRequestURL = targetClass.getMethod("getRequestURL e) { throw new RuntimeException(e); } } public String getRemoteAddr () { try { return (String) _getRemoteAddr.invoke(target); } catch

13630
  • 广告
    关闭

    什么是世界上最好的编程语言?丨云托管征文活动

    代金券、腾讯视频VIP、QQ音乐VIP、QB、公仔等奖励等你来拿!

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    java开发_获取访问者IP

    这是在一个opensource项目中看到的获取访问者ip的方法: 1 /** 2 * 获取访问者IP 3 * 4 * 在一般情况下使用Request.getRemoteAddr 6 * 本方法先从Header中获取X-Real-IP,如果不存在再从X-Forwarded-For获得第一个IP(用,分割), 7 * 如果还不存在则调用Request .getRemoteAddr { 24 return ip; 25 } 26 } else { 27 return request.getRemoteAddr

    93720

    干货:Java正确获取客户端真实IP方法整理

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。 如果使用了反向代理软件,将http://192.168.1.110:2046/的URL反向代理为http://www.abc.com/的URL时,用request.getRemoteAddr()方法获取的 http://192.168.1.110:2046/index.jsp,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr 或等于"unknown",那么: ip = request.getHeader("X-Real-IP") 6)如果该值为空或数组长度为0或等于"unknown",那么: ip = request.getRemoteAddr 如果一些对客户端校验较严格的应用(比如投票)要获取客户端ip,应该直接使用ip=request.getRemoteAddr(),虽然获取到的可能是代理的ip而不是客户端的ip,但这个获取到的ip基本上是不可能伪造的

    2.3K160

    老大说,网上这种获取真实IP地址的方法不对,我不信

    如上,判断ip地址的优先级是 "x-forwarded-for"> "Proxy-Client-IP"> "WL-Proxy-Client-IP"> request.getRemoteAddr() 其中带引号的都是从 建立连接时需要三次握手的,并且,只有知道了client端请求的IP地址,server端的数据才能返回给client,所以client想要获取到数据就必须提供真实的IP(DDOS攻击除外),而request.getRemoteAddr 那么为什么不直接使用使用request.getRemoteAddr()这个方法呢? 如果没有反向代理的话当然可行。 所以在使用了反向代理的情况下,request.getRemoteAddr()获取的是反响代理在内网中的ip地址。

    71520

    【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!

    Nginx反向代理后,Servlet应用通过request.getRemoteAddr()取到的IP是Nginx的IP地址,并非客户端真实IP,通过request.getRequestURL()获取的域名 此时,再试一下request.getRemoteAddr()和request.getRequestURL()的输出结果: RemoteAddr: 127.0.0.1 URL: http://192.168.1.100 (); fromSource = "request.getRemoteAddr"; } return ip; } 这种方式虽然能够获取客户端的IP地址,但是我总感觉这种方式不太友好 ,因为既然Servlet API提供了request.getRemoteAddr()方法获取客户端IP,那么无论有没有用反向代理对于代码编写者来说应该是透明的。 //192.168.1.100/test测试,结果: RemoteAddr: 192.168.1.100 URL: http://192.168.1.100/test 此时可发现通过request.getRemoteAddr

    1.6K50

    项目知识盲区3

    解决办法 @MapperScan注解和@Mapper注解同时加,MybatisPlus报错 basemapper Invalid bound statement (not found) Quartz getRemoteAddr ---- getRemoteAddr()和getRemoteHost() 区别 getRemoteAddr()和getRemoteHost() 区别 Java中获取客户端IP地址之getRemoteAddr

    8920

    获取访问者IP -- 基于Servlet方式

    代码简介: 在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。 如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。    index.jsp文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过request.getRemoteAddr

    49030

    哎,我早就料到你获取IP地址的姿势不对啦!

    } if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr 如上,判断ip地址的优先级是 "x-forwarded-for"> "Proxy-Client-IP"> "WL-Proxy-Client-IP"> request.getRemoteAddr() 其中带引号的都是从 那么为什么不直接使用使用request.getRemoteAddr()这个方法呢? 如果没有反向代理的话当然可行。 所以在使用了反向代理的情况下,request.getRemoteAddr()获取的是反响代理在内网中的ip地址。 found) { ip = request.getRemoteAddr(); } return ip; } } Nginx部分(自月影无痕

    1.8K10

    ServletRequestListener的用法和实例

    ServletRequestEvent arg0) { System.out.println("马克-to-win destroyed"+arg0.getServletRequest().getRemoteAddr ServletRequestEvent arg0) { System.out.println("马克-to-win request Initialized"+arg0.getServletRequest().getRemoteAddr

    24420

    Java杂谈之获取客户端IP

    ---- 1、常规方式 获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。 HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr x-forwarded-for"); } 如果使用了反向代理软件,将http://192.168.1.110:2046/ 的URL反向代理为 http://www.baidu.com.cn / 的URL时,用request.getRemoteAddr (headerName); } if (checkIp(ip)) { headerName = "remote addr"; ip = request.getRemoteAddr || clientIp.length() == 0 || "unknown".equalsIgnoreCase(clientIp)) { clientIp = request.getRemoteAddr

    62540

    Springboot使用内置对象HttpServletRequest、HttpServletResponse

    String, String> map = new HashMap<String, String>(); 18 map.put("客户端的ip地址: ", httpServletRequest.getRemoteAddr String, String> map = new HashMap<String, String>(); 20 map.put("客户端的ip地址: ", httpServletRequest.getRemoteAddr String, String> map = new HashMap<String, String>(); 36 map.put("客户端的ip地址: ", httpServletRequest.getRemoteAddr

    1.4K41

    Spring 获取真实Ip

    获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。 } if (StringUtils.isBlank(ip) || "unknown".equalsIgnoreCase(ip)) { ip = request.getRemoteAddr

    1.5K30

    Nginx proxy_set_header 理解

    = request.getScheme(); String serverName = request.getServerName(); String remoteName = request.getRemoteAddr AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-" 其中客户端IP不能获取到,而通过request.getRemoteAddr request.getScheme(); String serverName = request.getServerName(); String remoteName = request.getRemoteAddr 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36" "-" 除request.getRemoteAddr getRemoteAddr获取的是代理的请求地址。 因重定义了host,所以test值被改写成代理服务器IP。

    44660

    获取访问客户端ip

    有时需要对访问者ip进行记录,但是经过了nginx或者其他代理之后通过HttpServletRequest的getRemoteAddr方法获取到的ip不一定是真实访问者的ip,通过下面的方式可以较准确的获取访问者 ip = request.getRemoteAddr(); return ip; }

    10210

    部署在docker里的java程序获取真实的用户ip地址

    见代码: /** * 获取用户真实IP地址,不使用request.getRemoteAddr();的原因是有可能用户使用了代理软件方式避免真实IP地址, *

    * 可是 if (ip == null || ip.length() == 0 || unknown.equalsIgnoreCase(ip)) { ip = request.getRemoteAddr

    4.3K20

    写了个牛逼的日志切面,甩锅更方便了!

    =================Start========================"); LOGGER.info("IP : {}", request.getRemoteAddr =================Start========================"); LOGGER.info("IP : {}", request.getRemoteAddr ); RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr RequestInfo requestInfo = new RequestInfo(); requestInfo.setIp(request.getRemoteAddr RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr

    27530

    springcloud获取nginx反向代理后浏览器的真实ip

    } 第二步:获取真实ip地址 public class IpUtils { /** * 获取IP地址 *

    * 使用Nginx等反向代理软件, 则不能通过request.getRemoteAddr request.getHeader("HTTP_X_FORWARDED_FOR"); } if (checkIp(ip)) { ip = request.getRemoteAddr

    1.3K20

    为了甩锅,我写了个牛逼的日志切面!

    ================Start========================"); LOGGER.info("IP : {}", request.getRemoteAddr ============Start========================"); LOGGER.info("IP : {}", request.getRemoteAddr RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr

    3710

    用好 Spring AOP,天降大锅从容应对!

    ==============Start========================"); LOGGER.info("IP : {}", request.getRemoteAddr ==========Start========================"); LOGGER.info("IP : {}", request.getRemoteAddr proceedingJoinPoint.proceed(); RequestInfo requestInfo = new RequestInfo(); requestInfo.setIp(request.getRemoteAddr RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr RequestErrorInfo requestErrorInfo = new RequestErrorInfo(); requestErrorInfo.setIp(request.getRemoteAddr

    11830

    扫码关注云+社区

    领取腾讯云代金券