highlight: arduino-light
今天在发布uat环境的时候,出现了网关跨域的问题。所以思考是不是因为CorsWebFilter的优先级太低了,导致先进入验签、认证等过滤器。所以在自定义的CorsWebFilter上打了断点,发现自己认知的不足。
1.SpringCloudGateway里面有2种Filter:WebFilter和GlobalFilter
2.先执行WebFilterChain再执行DefaultGatewayFilterChain
3.CorsWebFilter属于WebFilterChain,GlobalFilter属于DefaultGatewayFilterChain。
关于这一方面的源码有时间在研究,先记录一下。 至于跨域的原因是前端配置的域名错误导致的。
最后附上CorsWebFilter
```java /* * @author: claude * @date: 2022/10/13 * @description: 跨域配置 */ @Configuration public class CorsConfig {
@Bean
public CorsWebFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", buildConfig());
return new CorsWebFilter(source);
}
private CorsConfiguration buildConfig() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
//在生产环境上最好指定域名,以免产生跨域安全问题
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
return corsConfiguration;
}
} ```
在uat环境部署时遇到网关跨域问题,作者发现可能是由于CorsWebFilter优先级较低,导致验签和认证过滤器先执行。文章指出SpringCloudGateway的Filter分为WebFilter和GlobalFilter,CorsWebFilter属于WebFilter链,而跨域问题实则是前端配置的域名错误。作者提供了CORS配置的代码示例,并计划进一步研究源码。

7389

被折叠的 条评论
为什么被折叠?



