springcloud-gateway配置跨域

跨域有两种解决方式:
一是将前端和后端通过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, 当系统中前台项目请求网关的时候,将不会出现跨域问题。网关转发的微服务本身不需要再配置跨域处理。

posted @ 2023-03-04 14:03  李很好  阅读(1146)  评论(0)    收藏  举报