一、网关第一步:断言->断言工厂
路由断言【Route Predicate】、断言工厂【Route Predicate Factory】
什么是路由断言?
判断一个路由断言是否符合条件,符合则转发到路由的目的地
我们在配置文件中写的断言规则只是字符串,这些字符串会被断言工厂(Route Predicate Factory)读取并处理,转换为路由判断的条件
当请求到来的时候,首先交给路由断言工厂进行处理,如果命中断言工厂,则执行下一步,否则返回错误信息
什么是路由断言工厂?
读取用户配置的断言规则,并把它解析成判断条件,并作出判断
像这样的断言工厂在SpringCloudGateway有十几个,每一个都有自己的判断条件
用的最多的断言工厂是Path,根据路径进行判断
这个的含义是对请求路径做判断,只要路径的开头是这个,就符合条件
他会根据配置文件中的路由规则挨边找,直到找到符合(放行)的或者没有符合的为止(报错404),在做相关的判断!
二、路由中的过滤器GatewayFilter
GatewayFilter是网关中提供的一种过滤器,可以对网关的请求以及微服务的响应做处理:
具体使用哪个路由过滤工厂,到时候可以查看微服务的源码查找使用方法!配置案例如下
配置默认路由过滤器:对所有请求都生效!
全局过滤器GlobalFilter:作用和GatewayFilter的作用一样,处理一切进入网关的请求和微服务响应,但是它需要自己写代码实现,不像GatewayFilter一样直接配置就行,优点在于:处理逻辑可以根据需求调整
ps:交给下一个过滤器处理是一个过滤链
三、过滤器的执行顺序
四、网关的跨域处理
跨域情况:浏览器禁止请求的发起者与服务端发生的ajax请求,请求被浏览器拦截的问题