前后分离架构下肯定会遇到跨域的问题,因为我们的请求都是通过微服务网关来转发的,所以我们可以在网关处统一处理跨域。
ElsaGateWayCorsConfigure
在elsa-gateway模块下的com.elsa.gateway.configure模块下新建ElsaGateWayCorsConfigure配置类:
@Configuration
public class ElsaGateWayCorsConfigure {
@Bean
public CorsFilter corsFilter() {
final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
final CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.setAllowCredentials(true);
corsConfiguration.addAllowedHeader(CorsConfiguration.ALL);
corsConfiguration.addAllowedOrigin(CorsConfiguration.ALL);
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方法。
源码下载
源码地址:跨域处理