1 import org.springframework.context.annotation.Bean;
2 import org.springframework.context.annotation.Configuration;
3 import org.springframework.web.cors.CorsConfiguration;
4 import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
5 import org.springframework.web.filter.CorsFilter;
6 import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
7
8
9 /**
10 * 拦截器配置
11 */
12 @Configuration
13 public class WebConfig extends WebMvcConfigurationSupport {
14
15 /**
16 * 跨域和拦截器冲突,不重写 addCorsMappings 采用过滤器设置跨域
17 * 改用过滤器CorsFilter 来配置跨域,由于Filter的位置是在Interceptor之前的,问题得到解决
18 */
19 @Bean
20 public CorsFilter corsFilter() {
21 CorsConfiguration config = new CorsConfiguration();
22 // 设置允许跨域请求的域名 * 表示所有
23 config.addAllowedOrigin("*");
24 // 是否允许证书 不再默认开启
25 config.setAllowCredentials(true);
26 // 设置允许的方法
27 config.addAllowedMethod("*");
28 // 允许任何请求头
29 config.addAllowedHeader("*");
30 config.addExposedHeader("X-Token");
31 UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
32 configSource.registerCorsConfiguration("/**", config);
33 return new CorsFilter(configSource);
34 }
35
36 }