文章目录
-
-
- 概念解释
- 使用
- 跨域配置
-
添加依赖
<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> <!--服务注册--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency>
application.yml
server: port: 80 spring: profiles: active: dev application: name: service-gateway cloud: nacos: discovery: server-addr: c701:8848 gateway: discovery: locator: enabled: true # gateway可以发现nacos中的微服务,并自动生成转发路由 # 配置路由规则 routes: - id: service-core uri: lb://service-core predicates: - Path=/*/core/** - id: service-sms uri: lb://service-sms predicates: - Path=/*/sms/** - id: service-oss uri: lb://service-oss predicates: - Path=/*/oss/**
概念解释
route 路由:路由是网关的基本单位,由id,URI ,一组predicate,一组filter组成,根据predicate进行匹配转发
Predicate(谓语、断言):路由转发的判断条件,目前SpringCloud Gateway支持多种方式,常见如:Path、Query、Method、Header等
Filter(过滤器):过滤器是路由转发请求时所经过的过滤逻辑,可用于修改请求、响应内容
工作流程如下:
客户端向springCloud Gateway发出请求.如果网关处理程序映射确定请求与路由匹配.将其发送到网关web处理程序,此处理程序运行时通过特定于请求的筛选发送请求,过滤器被虚线分隔的原因是过滤器可以在发送代理请求之前,执行所有“预”过滤逻辑,然后发出代理请求,在发出代理请求后,将执行“post”过滤器逻辑
使用
- application.yml配置文件方式
- 通过@Bean注解RouteLocator方法返回值
具体参考
跨域配置
删除微服务中的跨域注解 @CrossOrigin
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; @Configuration public class CorsConfig { @Bean public CorsWebFilter corsFilter() { CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); //是否允许携带cookie config.addAllowedOrigin("*"); //可接受的域,是一个具体域名或者*(代表任意域名) config.addAllowedHeader("*"); //允许携带的头 config.addAllowedMethod("*"); //允许访问的方式 UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", config); return new CorsWebFilter(source); } }