Python 官方文档:入门教程 => 点击学习
目录SpringBoot自定义拦截器和跨域配置冲突技术栈问题引出原代码新代码springBoot 拦截器和addCorsMappings冲突SpringBoot自定义拦截器和跨域配置
Vue-cli3,springboot 2.3.2.RELEASE
在做毕业设计过程中用到了自定义拦截器验证登录。同时在springboot配置类中设置了跨域问题,出现跨域失败的情况。
@Configuration
public class WEBConfig extends WebmvcConfigurationSupport {
@Override
protected void addCorsMappings(CorsReGIStry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST","PUT", "DELETE", "OPTIONS")
.allowedHeaders("*")
.maxAge(3600);
super.addCorsMappings(registry);
}
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login/*","/register/*");
}
}
经过了解和排查发现,当有请求发送到后台时,先被自定义拦截器拦截,如果拦截器验证没有问题,才会开始执行跨域配置。因此解决办法是让跨域配置在自定义拦截器之前执行。而Filter的执行顺序大于自定义拦截器,因此可以在Filter中实现跨域的配置。
@Configuration
public class WebConfig extends WebMvcConfigurationSupport {
@Override
protected void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new AuthInterceptor())
.addPathPatterns("/**")
.excludePathPatterns("/login/*","/register/*");
}
}
添加Filter
@Configuration
public class MyCorsFilter{
private CorsConfiguration corsConfig(){
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.setMaxAge(3600L);
corsConfiguration.setAllowCredentials(true);
return corsConfiguration;
}
@Bean
public CorsFilter corsFilter(){
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**",corsConfig());
return new CorsFilter(source);
}
}
项目中最开始跨域问题是通过自定义过滤器CorsFilter对request处理的,可以很好的解决问题。
最近,新项目中准备通过如下代码解决跨域问题,结果发现登录超时的错误会出现跨域问题,其他问题都不会。
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**");
}
}
因为登录超时的检查是在拦截器中,所以推测是可能是拦截器的执行在addCorsMappings生效之前。将CorsFilter代码拿到项目中后,果然没有这个问题了。所以这个bu基本上可以认定是是拦截器和addCorsMappings生效顺序的问题。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
--结束END--
本文标题: 解决SpringBoot自定义拦截器和跨域配置冲突的问题
本文链接: https://lsjlt.com/news/133181.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0