19 配置Spring Cloud Zuul支持跨域

作为网关组件,Spring Cloud Zuul对于跨域的支持是必不可少的,一般有如下两种方式设置跨域:

(1)在类或方法上增加@CrossOrigin注解

@RestController
@RequestMapping("/goods")
@CrossOrigin // 设置控制器支持跨域
public class GoodsController {

    @GetMapping("/search")
    @CrossOrigin(allowCredentials = "true") // 设置控制器某个方法支持跨域,并且允许Cookie跨域
    public Object searchGoods(){
        return "";
    }

}

如上所示,如果要让GoodsController控制器支持跨域,则在控制器类上加@CrossOrigin注解;如果只是想让控制器中的某个方法支持跨域,则在该方法上加@CrossOrigin注解。

 

(2)在Spring Cloud Zuul中使用CorsFilter过滤器

在Spring Cloud Zuul项目中新建一个类/config/CorsFilter,通过这个配置类实现网关的全局跨域配置;完整代码如下所示:

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(true);
        config.setAllowedOrigins(Arrays.asList("*")); // http://www.x-core.org.cn
        config.setAllowedHeaders(Arrays.asList("*"));
        config.setAllowedMethods(Arrays.asList("*"));
        config.setMaxAge(300L);

        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**",config);

        return new CorsFilter(source);
    }
}

在实际项目开发中,一般都采用Zuul的全局跨域设置这种方式实现网关的跨域配置。

19 配置Spring Cloud Zuul支持跨域_第1张图片

你可能感兴趣的:(微服务:Spring,Cloud)