第二天 h:
过滤器执行顺序:
请求进入网关时,会碰到三类过滤器:当前路由的过滤器,DefaultFilter,GlobalFilter。
请求路由后会将当前路由过滤器和DefaultFilter、GlobalFilter,合并到一个过滤器链(集合)中,排序后依次执行每个过滤器。
1.每一个过滤器都必须指定一个int类型的order值,order值越小,优先级越高,执行顺序越靠前。
2.GlobalFilter通过实现Ordered接口,或者添加@Order注解来指定order值,由我们自己指定
3.路由过滤器和defaultFilter的order由Spring指定,默认是按照声明顺序从1递增。
4.当过滤器的order值一样时,会按照 defaultFilter > 路由过滤器 > GlobalFilter的顺序执行。
这里是几个类的源码。
跨域问题处理:
跨域:域名不一致就是跨域,主要包括:
1.域名不同: www.taobao.com 和 www.taobao.org 和 www.jd.com 和 miaosha.jd.com
2.域名相同,端口不同:localhost:8080和localhost8081
跨域问题:浏览器禁止请求的发起者与服务端发生跨域ajax请求,请求被浏览器拦截的问题
解决方案:CORS
spring:
cloud:
gateway:
globalcors: # 全局的跨域处理
corsConfigurations:
'[/**]' # 任意请求(这里写拦截哪些请求)
allowedOrigins: # 允许哪些网站的跨域请求
- "http://localhost:8090"
- "http://www.leyou.com"
allowedMethods: # 允许的跨域ajax请求
- "GET"
- "POST"
- "DELETE"
- "PUT"
- "OPTIONS"
allowedHeader: "*" # 允许在请求中携带的头部信息
allowedCredentials: true # 是否允许携带cookie
maxAge: 360000 # 这词跨域检测的有效期
把这段配置直接写入GatewayFilter中的yml文件。