记录一次服务器上获取客户端真实ip的问题

在部署项目到服务器并使用nginx作为代理后,后端通过切面限制每个IP一小时只能留言两次。然而,实际操作中,后端始终只能获取到127.0.0.1。问题在于前端代码直接硬编码了后端接口地址,导致跨域请求。修正前端打包后,解决了这个问题,确保后端能正确获取客户端真实IP。
摘要由CSDN通过智能技术生成

最近公司在做一个项目,有一个需求,官网上可以提交留言,但是为了安全,后端做了限制,每个ip在一个小时内只能留言两次,第三次就会提示请求过于频繁。

后端在提交留言的时候,添加了一个切面,用于判断限制次数,其中有获取客户端的真实ip的方法

public static String getIpAddress(HttpServletRequest request) {
        String ip = request.getHeader("x-forwarded-for");
        String xip = request.getHeader("X-Real-IP");
        if (ip != null && ip.length() != 0 && !ip.equalsIgnoreCase("unKnown")) {
            int index = ip.indexOf(",");
            if (index != -1) {
                return ip.substring(0, index);
            } else {
                return ip;
            }
        }
        ip = xip;
        if (ip != null && ip.length() != 0 && !ip.equalsIgnoreCase("unKnown")) {
            return ip;
        }
        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值