content: package cn.org.alan.agile.config;
  
  import org.springframework.boot.web.servlet.FilterRegistrationBean;
  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.web.cors.CorsConfiguration;
  import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
  import org.springframework.web.filter.CorsFilter;
  
  import java.util.Collections;
  
  /**
   * CORS 资源共享配置
   *
   * @author Alan
   * @since 2023/4/17
   */
  @Configuration
  public class CorsConfig {
  
      @Bean
      public FilterRegistrationBean filterRegistrationBean() {
          CorsConfiguration corsConfiguration = new CorsConfiguration();
          //1.允许任何来源
          corsConfiguration.setAllowedOriginPatterns(Collections.singletonList("*"));
          //2.允许任何请求头
          corsConfiguration.addAllowedHeader(CorsConfiguration.ALL);
          //3.允许任何方法
          corsConfiguration.addAllowedMethod(CorsConfiguration.ALL);
          //4.允许凭证
          corsConfiguration.setAllowCredentials(true);
  
          UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
          source.registerCorsConfiguration("/**", corsConfiguration);
          CorsFilter corsFilter = new CorsFilter(source);
  
          FilterRegistrationBean<CorsFilter> filterRegistrationBean=new FilterRegistrationBean<>(corsFilter);
          filterRegistrationBean.setOrder(-101);  // 小于 SpringSecurity Filter的 Order(-100) 即可
  
          return filterRegistrationBean;
      }
  }