课程名称:Spring Cloud+ Vue前后端分离开发企业级在线视频系统
课程章节:第5章 单表管理功能前后端开发
讲师姓名:甲蛙老师
课程内容:
大章列表查询功能前端页面开发:使用gateway路由转发,vue页面只访问gateway的端口,并解决gateway跨域问题,使用lb://+注册中心名称作路由转发
课程收获:
使用gateway路由转发
# 将9002地址对外隐藏,暴露9000地址 若访问localhost:9000/business/** 实际处理的是localhost:9002/business/**
spring.cloud.gateway.routes[1].id=business
spring.cloud.gateway.routes[1].uri=http://${eureka.instance.hostname}:9002
# 基于路径进行转发 只要路径包括"/business/**"就进行转发
spring.cloud.gateway.routes[1].predicates[1].name=Path
spring.cloud.gateway.routes[1].predicates[1].args[1]=/business/**
进行以上配置后,重启网关即可通过9000端口访问business的内容。
同时需要解决跨域问题,有一种根据还有网关的微服务项目更好的配置方法,在GatewayApplication.java中添加如下,同时将原来的CorsConfig注释掉。
推荐当单体SpringBoot应用时使用CorsConfig,而微服务项目使用网关时使用如下代码。
/**
* 配置跨域
* @return
*/
@Bean
public CorsWebFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(Boolean.TRUE);
config.addAllowedMethod("*");
config.addAllowedOrigin("*");
config.addAllowedHeader("*");
config.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(new PathPatternParser());
source.registerCorsConfiguration("/**", config);
return new CorsWebFilter(source);
}
使用lb://+注册中心名称作路由转发
将网关的配置项
spring.cloud.gateway.routes[1].uri=http://127.0.0.1:9002
改成
spring.cloud.gateway.routes[1].uri=lb://business
表示使用负载均衡进行路由转发