跨域有两种解决方式:
一是将前端和后端通过nginx部署在同一域名下,后端通过location /admin 这种方式转发,避免浏览器因为协议,主机和端口号不同造成的跨域
二是非简单请求,浏览器一般会先发起option预检请求,然后再发起真正的请求,预检请求中服务器响应返回的header会告诉客户端是否允许跨域。
本文是第二种,设置响应头告诉客户端浏览器允许跨域。
1,gateway项目新建config包,创建mallCorsConfiguration配置类
@Configuration
public class MallCorsConfiguration {
@Bean
public CorsWebFilter corsWebFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedHeader("*");
corsConfiguration.addAllowedMethod("*");
corsConfiguration.addAllowedOrigin("*");
corsConfiguration.setAllowCredentials(true);
source.registerCorsConfiguration("/**",corsConfiguration);
return new CorsWebFilter(source);
}
}
2, 当系统中前台项目请求网关的时候,将不会出现跨域问题。网关转发的微服务本身不需要再配置跨域处理。
标签:跨域,corsConfiguration,springcloud,source,new,gateway,请求 From: https://www.cnblogs.com/lihenhao/p/17178208.html