sentinel流控時(shí),web的OPTIONS請(qǐng)求跨域問題
添加HandlerInterceptor耙蔑、WebMvcConfigurer.addCorsMappings層級(jí)的跨域配置都不會(huì)生效
原因在于sentinel流控執(zhí)行的聲明周期高于以上層級(jí),需要按如下配置CorsFilter層級(jí)的跨域設(shè)置
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;
@Configuration
public class CustomCORSConfiguration {
private CorsConfiguration buildConfig(){
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedHeader("*"); // 允許任何的head頭部
corsConfiguration.addAllowedOrigin("*"); // 允許任何域名使用
corsConfiguration.addAllowedMethod("*"); // 允許任何的請(qǐng)求方法
corsConfiguration.setAllowCredentials(true);
return corsConfiguration;
}
// 添加CorsFilter攔截器兑徘,對(duì)任意的請(qǐng)求使用
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", buildConfig());
return new CorsFilter(source);
}
}