先需要注入一个允许跨域的filter.
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true);
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
spring-cloud-gateway 2.x存在bug,可能出现多个相同的响应头
The 'Access-Control-Allow-Origin' header contains multiple values 'XXX,XXX,XXX'
,所以我们需要配置一下,可以筛选掉相同的响应头,它自带一个DedupeResponseHeaderFilterFactory,我们只需要做一下简单配置即可.
spring:
cloud:
gateway:
default-filters:
- DedupeResponseHeader=Access-Control-Allow-Credentials Access-Control-Allow-Origin