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

if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
		return true;
}
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当你在JavaScript代码遇到"Uncaught SyntaxError: unexpected token: ':'"错误时,这意味着在代码出现了意外的":"标记。这通常是由以下几种情况引起的: 1. 对象字面量的语法错误:在对象字面量,每对键和值之间应该使用":"进行分隔。如果在该分隔符之前或之后使用了额外的":",就会导致此错误。 2. 错误的语法结构:在某些情况下,使用":"的语法结构可能是不正确的,例如在函数定义或条件语句。 3. 错误的引用或拼写错误:如果在代码引用了一个不存在或拼写错误的变量或函数,并且使用了":"作为分隔符,那么就会触发此错误。 要解决这个错误,你可以按照以下步骤进行排查: 1. 仔细检查代码的对象字面量是否正确使用了":"进行分隔。 2. 检查代码的条件语句和函数定义是否正确使用了":"。 3. 确保没有引用或拼写错误,并且所引用的变量或函数是正确的。 4. 使用浏览器的开发者工具来定位错误所在的行数和具体位置,以便更准确地定位和解决问题。 请记住,"Uncaught SyntaxError: unexpected token: ':'"错误通常是由语法错误引起的,因此检查代码的语法是否正确是解决此错误的第一步。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [解决 Uncaught SyntaxError: Unexpected token ‘‘ 解决方法](https://blog.csdn.net/HeXinT/article/details/125082562)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Uncaught SyntaxError: Unexpected token ‘.‘错误解决](https://blog.csdn.net/weixin_43934104/article/details/107861216)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [JS提示:Uncaught SyntaxError:Unexpected token ) 错误的解决方法](https://download.csdn.net/download/weixin_38725625/12998018)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值