美文网首页
springboot中拦截器与跨域配置冲突解决

springboot中拦截器与跨域配置冲突解决

作者: 加勒比海没盗 | 来源:发表于2019-08-05 17:15 被阅读0次

@Configuration

public class GlobalCorsConfigextends WebMvcConfigurerAdapter {

@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")

.exposedHeaders("Access-Control-Allow-Origin", "Access-Control-Allow-Credentials")

.allowCredentials(true).maxAge(3600);

    }

}

修改为:


@Configuration

public class GlobalCorsConfig {

@Bean

    public CorsFiltercorsFilter() {

CorsConfiguration config =new CorsConfiguration();

        config.addAllowedOrigin("*");

        config.setAllowCredentials(true);

        config.addAllowedMethod("*");

        config.addAllowedHeader("*");

        UrlBasedCorsConfigurationSource configSource =new UrlBasedCorsConfigurationSource();

        configSource.registerCorsConfiguration("/**", config);

        return new CorsFilter(configSource);

    }

}

解决原理:一个http请求,先走filter,到达servlet后才进行拦截器的处理,所以我们可以把cors放在filter里,就可以优先于权限拦截器执行。

相关文章

网友评论

      本文标题:springboot中拦截器与跨域配置冲突解决

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