• gateway过滤器


    简介

    1 作用: 过滤器就是在请求的传递过程中,对请求和响应做一些手脚

    2 生命周期: Pre Post

    3 分类: 局部过滤器(作用在某一个路由上) 全局过滤器(作用全部路由上) 在Gateway中, Filter的生命周期只有两个:“pre” 和 “post”。

    • PRE: 这种过滤器在请求被路由之前调用。我们可利用这种过滤器实现身份验证、在集群中选择 请求的微服务、记录调试信息等。
    • POST:这种过滤器在路由到微服务以后执行。这种过滤器可用来为响应添加标准的HTTP Header、收集统计信息和指标、将响应从微服务发送给客户端等。

     Gateway 的Filter从作用范围可分为两种: GatewayFilter与GlobalFilter。

    • GatewayFilter:应用到单个路由或者一个分组的路由上。
    • GlobalFilter:应用到所有的路由上。

    局部过滤器

    局部过滤器是针对单个路由的过滤器。在SpringCloud Gateway中内置了很多不同类型的网关路由过滤器。具体如下:

    过滤器工厂参数作用
    AddRequestHeader为原始请求添加HeaderHeader的名称及值
    AddRequestParameter为原始请求添加请求参数参数名称及值
    AddResponseHeader为原始响应添加HeaderHeader的名称及值
    DedupeResponseHeader剔除响应头中重复的值需要去重的Header名 称及去重策略
    Hystrix为路由引入Hystrix的断路器保护HystrixCommand的名 称
    FallbackHeaders为fallbackUri的请求头中添加具 体的异常信息Header的名称
    PrefixPath为原始请求路径添加前缀前缀路径
    PreserveHostHeader为请求添加一个 preserveHostHeader=true的属 性,路由过滤器会检查该属性以 决定是否要发送原始的Host
    RequestRateLimiter用于对请求限流,限流算法为令 牌桶keyResolver、 rateLimiter、 statusCode、 denyEmptyKey、 emptyKeyStatus
    RedirectTo将原始请求重定向到指定的URLhttp状态码及重定向的 url
    RemoveHopByHopHeadersFilter为原始请求删除IETF组织规定的 一系列Header默认就会启用,可以通 过配置指定仅删除哪些 Header
    RemoveRequestHeader为原始请求删除某个HeaderHeader名称
    RemoveResponseHeader为原始响应删除某个HeaderHeader名称
    RewritePath重写原始的请求路径原始路径正则表达式以 及重写后路径的正则表 达式
    RewriteResponseHeader重写原始响应中的某个HeaderHeader名称,值的正 则表达式,重写后的值
    SaveSession在转发请求之前,强制执行 WebSession::save操作
    secureHeaders为原始响应添加一系列起安全作 用的响应头无,支持修改这些安全 响应头的值
    SetPath修改原始的请求路径修改后的路径
    SetResponseHeader修改原始响应中某个Header的值Header名称,修改后 的值
    SetStatus修改原始响应的状态码HTTP 状态码,可以是 数字,也可以是字符串
    StripPrefix用于截断原始请求的路径使用数字表示要截断的 路径的数量
    Retry针对不同的响应进行重试retries、statuses、 methods、series
    RequestSize设置允许接收最大请求包的大 小。如果请求包大小超过设置的 值,则返回 413 Payload Too Large请求包大小,单位为字 节,默认值为5M
    ModifyRequestBody在转发请求之前修改原始请求体 内容修改后的请求体内容
    ModifyResponseBody修改原始响应体的内容修改后的响应体内容

    全局过滤器

    全局过滤器作用于所有路由, 无需配置。通过全局过滤器可以实现对权限的统一校验,安全性验证等功能。

    SpringCloud Gateway内部也是通过一系列的内置全局过滤器对整个路由转发进行处理如下:

     

  • 相关阅读:
    sqlite3数据库文件损坏修复
    爬虫Python
    创建对象在堆区如何分配内存
    ILRuntime热更的小技巧
    7.代理模式
    Qt报错::failed to parse default search paths from compiler output
    【线性代数】P4 行列式相乘+范德蒙德行列式+克莱姆法则 cramer
    Servlet使用ioc中的bean
    KEPServerEX 6 之 高级标签插件 Advanced Tags 中文说明(完整版)
    Postman进阶篇(十)-在pre-request script或test script中使用pm对象访问变量
  • 原文地址:https://blog.csdn.net/yanjianpeng_2018/article/details/126828287