一、为什么需要网关?
网关功能:
在SpringCloud中网关的实现包括两种:
网关的作用:
二、搭建网关服务
1、创建新的module,引入SpringCloudGateway的依赖和nacos的服务发现依赖:
2、编写路由配置及nacos地址
三、过滤器工厂。
案例1:
给所有进入userservice的请求添加一个请求头
给所有进入userservice的请求添加一个请求头:Truth=itcast is freaking awesome!
实现方式:在gateway中修改application.yml文件,给userservice的路由添加过滤器:
如果要对所有的路由都生效,则可以将过滤器工厂写到default下。格式如下:
1.过滤器的作用:
过滤器的作用是什么?
defaultFilters的作用是什么?
全局过滤器 GlobalFilter
全局过滤器的作用也是处理一切进入网关的请求和微服务响应,与GatewayFilter的作用一样。 区别在于GatewayFilter通过配置定义,处理逻辑是固定的。而GlobalFilter的逻辑需要自己写代码实现。 定义方式是实现GlobalFilter接口。
public interface GlobalFilter {
/** * 处理当前请求,有必要的话通过{@link GatewayFilterChain}将请求交给下一个过滤器处理 * * @param exchange 请求上下文,里面可以获取Request、Response等信息
* @param chain 用来把请求委托给下一个过滤器
* @return {@code Mono<Void>} 返回标示当前过滤器业务结束 */
Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain);
}
案例1:定义全局过滤器,拦截并判断用户身份
需求:定义全局过滤器,拦截请求,判断请求的参数是否满足下面条件: 参数中是否有authorization, authorization参数值是否为admin 如果同时满足则放行,否则拦截
实现全局过滤器的步骤?
1.过滤器的执行顺序
路由过滤器、defaultFilter、全局过滤器的执行顺序?
2.跨域问题处理
跨域:域名不一致就是跨域,主要包括:
域名不同: www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com 域名相同,端口不同:localhost:8080和localhost8081
跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题 解决方案:CORS