spring cloud gateway跨域问题
程序员文章站
2022-07-10 16:11:06
...
在访问服务的时候,必然会遇到跨域问题,如图:
当我直接访问服务的时候可以获取到结果的JSON数据,但是跨域访问的时候就获取不到数据。
解决方法:
由于gateway使用的是webflux,而不是springmvc,所以我们需要先关闭wenbflux的cors,再去gateway的filter里边设置cors就行了。代码如下:
package com.lt.gateway.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
import org.springframework.web.util.pattern.PathPatternParser;
@Configuration
public class CorsConfig {
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
}
gateway配置:
spring:
cloud:
gateway:
globalcors:
corsConfigurations:
'[/**]':
allowedHeaders: "*"
allowedOrigins: "*"
allowedMethods:
- GET
配置完成后重新启动测试:
可以发现现在就能跨域访问了。