全局跨域失效问题

简单的全局跨域配置

public void addCorsMappings(CorsRegistry registry) {

     registry.addMapping("/**")

        .allowedOrigins("*")

        .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")

        .allowCredentials(true)

         .allowedHeaders("*")

         .maxAge(3600);

}

当服务端接收到一个请求时,该请求会先经过过滤器,然后进入拦截器中,然后再进入Mapping映射中的路径所指向的资源,所以跨域配置在mapping上并不起作用,返回的头信息中并没有配置的跨域信息,浏览器就会报跨域异常。

 

解决方式:

private CorsConfiguration corsConfig() {

  CorsConfiguration corsConfiguration = new CorsConfiguration();

  corsConfiguration.addAllowedOrigin("*");

  corsConfiguration.addAllowedHeader("*");

  corsConfiguration.addAllowedMethod("*");

  corsConfiguration.setAllowCredentials(true);

  corsConfiguration.setMaxAge(3600L);

  return corsConfiguration;

}

// 当前类得注入spring容器 加上@Component注解

 

@Bean

public CorsFilter corsFilter() {

  UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();

  source.registerCorsConfiguration("/**", corsConfig());

  return new CorsFilter(source);

}

posted @ 2021-12-09 17:15  DarkerbeS  阅读(117)  评论(0编辑  收藏  举报