Springboot 前后端分离项目中使用拦截器获取不到token或者token为空的问题(OPTION请求被拦截问题)

这篇具有很好参考价值的文章主要介绍了Springboot 前后端分离项目中使用拦截器获取不到token或者token为空的问题(OPTION请求被拦截问题)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

转载Springboot前后端分离项目中使用拦截器获取不到token或者token为空的问题(OPTION请求被拦截问题)

前言

目是前后端分离的,并且springboot也配置了跨域功能。

但是配置了JWT功能、以及验证器验证之后却出现了获取不到jwt的问题。获取参数为 null。并且全局异常拦截失效,前端响应为cors跨域问题获取不到数据。

使用postman可以正常请求并获取数据,考虑到是不是因为自己header中的jwt字段不是标准的header字段,尝试放到Authorization中也是null,并且全局拦截也是失效的。

又考虑到是不是因为cors配置加载于拦截器之后,又在拦截器里面配置响应以及header允许cors,一久无效。

最后看到《前后端分离,SpringBoot拦截器中,获取的请求头token为NULL问题解决》这篇文章才得以解决,前端在请求的时候会发送一个OPTION请求来验证本次请求是否安全,但是springboot的拦截器会拦截所有请求。因为第一次是OPTION没有携带JWT,所以验证失败导致一连串的问题。

Edge、Google浏览器的开发者工具中不显示OPTION请求(可以通过配置显示)。

FireFox浏览器默认支持显示。FireFox YYDS

SpringBoot配置跨域

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        //项目中的所有接口都支持跨域
        registry.addMapping("/**")
                //所有地址都可以访问,也可以配置具体地址
                .allowedOrigins("*")
                //允许的请求方式
                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
                //是否支持跨域Cookie
                .allowCredentials(true)
                // 跨域允许时间
                .maxAge(3600);
    }
}

解决方案

在JWT拦截器方法的最前端添加判断是否是OPTIONS请求,如果是就返回TRUE文章来源地址https://www.toymoban.com/news/detail-630062.html

if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
		return true;
}

到了这里,关于Springboot 前后端分离项目中使用拦截器获取不到token或者token为空的问题(OPTION请求被拦截问题)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Spring实战项目】SpringBoot3整合WebSocket+拦截器实现登录验证!从原理到实战

    🎉🎉 欢迎光临,终于等到你啦 🎉🎉 🏅我是 苏泽 ,一位对技术充满热情的探索者和分享者。🚀🚀 🌟持续更新的专栏 《Spring 狂野之旅:从入门到入魔》 🚀 本专栏带你从Spring入门到入魔   这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suzee.blog.

    2024年04月17日
    浏览(57)
  • 前后端交互系列之Axios详解(包括拦截器)

    Axios是前端最流行的交互工具。所以本节内容将对Axios进行详细讲解。 本节内容需要由Ajax的基础及Promise的基础。这两篇文章可以参考: 前端后端交互系列之原生Ajax的使用 前后端交互系列之promise详解 如果想快速了解axios也可以查看(本篇文章的深度是更高的): 浅析axios原

    2024年02月06日
    浏览(33)
  • SpringBoot 统计API接口用时该使用过滤器还是拦截器?

    统计请求的处理时间(用时)既可以使用 Servlet 过滤器(Filter) ,也可以使用 Spring 拦截器(Interceptor) 。两者都可以在请求处理前后插入自定义逻辑,从而实现对请求响应时间的统计。 如果你需要在更底层、与框架无关的地方记录所有请求(包括静态资源请求)的处理时间

    2024年01月18日
    浏览(47)
  • 【SpringMVC】统一异常处理 前后台协议联调 拦截器

    1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的 getById 方法 重新启动运行项目,使用PostMan发送请求,当传入的id为1,则会出现如下效果: 前端接收到这个信息后和之前我们约定的格式不一致,这个问题该如何解决? 在解决问题之前,我们

    2024年02月11日
    浏览(49)
  • 3-3. SpringBoot项目集成【用户身份认证】实战 【全流程篇】基于JWT+双重检查的登录+登出+拦截器

    书接上文 实战核心篇,我们已经 把JWT的核心代码实现了! 文中不止是代码实现,更是使用到了设计原则,提升大家的内功心法。并且抛转引玉的实现了RSA和HMAC两种算法,还没看过的同学,建议先看上文。所以对于 基于JWT的Token用户身份认证机制 来说,剩下的就是与接口结

    2023年04月16日
    浏览(49)
  • SpringBoot加入拦截器——登录拦截器的实现

            拦截器 Interceptor 在 Spring MVC 中的地位等同于 Servlet 规范中的过滤器 Filter,拦截的是处理器的执行,由于是全局行为,因此常用于做一些通用的功能,如请求日志打印、权限控制等。         核心原理:AOP思想 preHandle:  预先处理,在目标的controller方法执行之前,进行

    2024年02月15日
    浏览(43)
  • 【Spring】Springboot过滤器Filter和拦截器Inteceptor详解及使用场景

    Springboot过滤器Filter和拦截器Inteceptor详解及使用场景

    2024年02月13日
    浏览(44)
  • 【SpringMVC】统一异常处理 前后台协议联调 拦截器(文末赠书)

    1. 问题描述 在讲解这一部分知识点之前,我们先来演示个效果,修改BookController类的 getById 方法 重新启动运行项目,使用PostMan发送请求,当传入的id为1,则会出现如下效果: 前端接收到这个信息后和之前我们约定的格式不一致,这个问题该如何解决? 在解决问题之前,我们

    2024年02月09日
    浏览(46)
  • springboot在自定义拦截器中使用@Value获取值失败及@RefreshScope 不生效问题

    @RefreshScope注解用于标识在服务配置中心配置更新时,当前 Bean 需要重新注入以获取最新的配置值。但是在这段代码中,@RefreshScope注解标注在拦截器类上,并不会使拦截器实例重新注入。 通常情况下,拦截器是在应用程序启动时由 Spring Framework 实例化和初始化的,而不是在请

    2024年02月04日
    浏览(47)
  • 【SpringBoot篇】Interceptor拦截器 | 拦截器和过滤器的区别

    拦截器(Interceptor)是一种软件设计模式,用于在应用程序处理请求或响应时对其进行拦截和修改。拦截器可以在整个应用程序中使用,用于执行跨越多个层的通用任务,如身份验证、授权、缓存、日志记录、性能计量等。 在Web开发中,拦截器通常用于在请求到达控制器之前

    2024年02月04日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包