springboot过滤器中拿不到header参数

在处理HTTP请求时,遇到OPTIONS预检问题,导致header中的token无法获取。解决方案是在过滤器中检查请求类型,如果为OPTIONS,则直接放行,否则进行正常的token验证逻辑。这样确保了预检请求不影响正常的授权流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天写代码的时候,发现放在header里的token一直拿不到,其实是因为浏览器会有一次预检

只要我们在过滤器里遇到这个OPTIONS请求预检放行,就可以的

@Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        System.out.println(request.getMethod());
        //查看这次请求是不是OPTIONS,如果是就直接放行
        if (!"OPTIONS".equals(request.getMethod())) {
                String token = request.getHeader("token");
                System.out.println(token);
                if (token != null) {
                    User user = TokenUtil.tokenDecode(token);
                    String status = user.getStatus();
                    if ("1".equals(status)) {
                        System.out.println("正常");
                        filterChain.doFilter(servletRequest, servletResponse);
                    } else {
                        System.out.println("用户状态异常");
                        throw new BaseException(BaseErrorEnum.USER_NAME_LOCK);
                    }
                } else {
                    System.out.println("用户未登录");
                    throw new BaseException(BaseErrorEnum.USER_NOLOGIN);
                }
            }else {
            System.out.println("放行1次");
            filterChain.doFilter(servletRequest, servletResponse);
        }
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值