方式一:注解方式
// 将跨域访问的接口添加此注解, 也可放在Controller上
@CrossOrigin(origins = "*", maxAge = 3600)
方式二: 全局加, 在启动类中添加以下代码(效果同方式一)
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(urlBasedCorsConfigurationSource);
}
重点:以上两种方法会造成 拦截器 走两遍, 如果有在header 中取值时, 第一遍取不到, 导致报错
方式三 终极版
@Order(Ordered.HIGHEST_PRECEDE