前后分离架构下肯定会遇到跨域的问题,因为我们的请求都是通过微服务网关来转发的,所以我们可以在网关处, 统一处理跨域。
下新建 BNTangCorsConfigure 配置类:
/** * @author BNTang */ @Configuration public class BNTangCorsConfigure { @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration corsConfiguration = new CorsConfiguration(); // 表示允许cookie跨域 corsConfiguration.setAllowCredentials(true); // 表示请求头部允许携带任何内容 corsConfiguration.addAllowedHeader(CorsConfiguration.ALL); // 表示允许任何来源 corsConfiguration.addAllowedOrigin(CorsConfiguration.ALL); // 表示允许任何HTTP方法 corsConfiguration.addAllowedMethod(CorsConfiguration.ALL); source.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(source); } }
该配置类里注册了 CorsFilter:
- setAllowCredentials(true) 表示允许cookie跨域;
- addAllowedHeader(CorsConfiguration.ALL) 表示请求头部允许携带任何内容;
- addAllowedOrigin(CorsConfiguration.ALL) 表示允许任何来源;
- addAllowedMethod(CorsConfiguration.ALL) 表示允许任何HTTP方法。