服務端解決跨域
1. 使用 addCorsMappings方式
- sping中可以配置
addCorsMappings
, 如下@Configuration @EnableWebMvc public class ConfigurerAdapter implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowCredentials(true) .allowedHeaders("*") .allowedOrigins("*") .allowedMethods("GET","POST","PUT","DELETE"); } }
- 此種配置 , 生效在攔截器後 , 若我們設置了攔截器 , 則此種方式會失效
2. 使用 corsFilter方式
- 可以使用設置
corsFilter
的方式解決跨域問題 , 因爲Filter
在Interceptor
執行 , 所以不會有上述的失效問題 - 代碼設置如下
@Configuration @EnableWebMvc public class ConfigurerAdapter implements WebMvcConfigurer { @Bean public CorsFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); // 設置允許跨域請求的域名 config.addAllowedOrigin("*"); // 是否允許證書 不再默認開啓 // config.setAllowCredentials(true); // 設置允許的方法 config.addAllowedMethod("*"); // 允許任何頭 config.addAllowedHeader("*"); //預檢請求頭信息描述 //config.addExposedHeader("token"); UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource(); configSource.registerCorsConfiguration("/**", config); return new CorsFilter(configSource); } }