美文网首页
解决Spring Boot下配置跨域拦截有时候无效的问题

解决Spring Boot下配置跨域拦截有时候无效的问题

作者: dbc94a66f502 | 来源:发表于2019-07-26 09:38 被阅读0次

    下面的我一开始的配置

    @Configuration
    public class WebMvcConfig implements WebMvcConfigurer {
        @Autowired
        private AuthorizationInterceptor authorizationInterceptor;
        @Autowired
        private FileTypeInterceptor fileTypeInterceptor;
        @Autowired
        private LoginUserHandlerMethodArgumentResolver loginUserHandlerMethodArgumentResolver;
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(authorizationInterceptor).addPathPatterns("/api/**");
            registry.addInterceptor(fileTypeInterceptor).addPathPatterns("/api/**");
        }
    
        @Override
        public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
            argumentResolvers.add(loginUserHandlerMethodArgumentResolver);
        }
    
        @Override
       public void addCorsMappings(CorsRegistry registry) {
           registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "OPTIONS", "PUT")
                    .allowedHeaders("Content-Type", "X-Requested-With", "accept", "Origin", "Access-Control-Request-Method",
                            "Access-Control-Request-Headers", "Access-Control-Allow-Origin", "Access-Control-Allow-Credentials", "token")
                    //.exposedHeaders("")
                    .allowCredentials(true).maxAge(3600);
        }
    }
    

    问题描述:

    处理跨域拦截外,还配置了token的拦截和文件上传格式的拦截。
    自定义的token拦截器比自带的跨域拦截器执行顺序靠前,当token失效抛出异常的时候,会导致没有进行跨域拦截处理。

    解决方法:

    改为用过滤器方式处理跨域问题

        @Bean
        public CorsFilter corsFilter() {
            CorsConfiguration config = new CorsConfiguration();
            config.addAllowedOrigin("*");
            config.addAllowedMethod("*");
            config.addAllowedHeader("*");
            UrlBasedCorsConfigurationSource corsConfigurationSource = new UrlBasedCorsConfigurationSource();
            corsConfigurationSource.registerCorsConfiguration("/**", config);
            return new CorsFilter(corsConfigurationSource);
        }
    

    相关文章

      网友评论

          本文标题:解决Spring Boot下配置跨域拦截有时候无效的问题

          本文链接:https://www.haomeiwen.com/subject/dhalrctx.html