前後分離架構下肯定會遇到跨域的問題,因為我們的請求都是通過微服務網關來轉發的,是以我們可以在網關處統一處理跨域。
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方法。
源碼下載下傳
源碼位址:跨域處理