首页 > 其他分享 >SpringCloud gateway内置过滤器之四

SpringCloud gateway内置过滤器之四

时间:2023-05-06 19:23:20浏览次数:54  
标签:GatewayFilter producer SpringCloud gateway https 之四 Path id

1、RewriteLocationResponseHeader GatewayFilter

RewriteLocationResponseHeader GatewayFilter修改Location响应标头的值,通常是为了消除后端特定的详细信息。有stripVersionMode、locationHeaderName、hostValue和protocolsRegex参数。protocolsRegx参数必须是有效的正则表达式字符串,协议名称与此字符串匹配。如果不匹配,过滤器将不执行任何操作。默认值为http|https|ftp|ftps。

spring:
  cloud:
    gateway:
      routes:
      - id: rewritelocationresponseheader_route
        uri: http://example.org
        filters:
        - RewriteLocationResponseHeader=AS_IN_REQUEST, Location, ,

stripVersionMode参数有以下可能的值:NEVER_STRIP、AS_IN_REQUEST(默认值)和ALWAYS_STRIP。

  • NEVER_STRIP:即使原始请求路径不包含任何版本,该版本也不会被剥离。
  • AS_IN_REQUEST:只有当原始请求路径不包含版本时,才会剥离版本。
  • ALWAYS_STRIP:版本总是被剥离的,即使原始请求路径包含版本。

2、RewriteResponseHeader GatewayFilter

RewriteResponseHeader GatewayFilter采用名称、正则表达式和替换参数。它使用Java正则表达式来灵活地重写响应头值。

spring:
  cloud:
    gateway:
      enabled: true
      routes:
        - id: Goods-Server  # 路由 id,唯一标识
          uri: lb://producer
          predicates:
            #  - Path=/**  # 断言,路由匹配条件,匹配 /product 开头的所有 api
              - Path=/producer/{segment}
          filters:
              - StripPrefix=1
              - RewriteResponseHeader=X-Response-Red, , password=[^&]+, password=***

修改Producer模块的Controller:

@RequestMapping("/hello")
public String hello(String name, HttpServletRequest request, HttpServletResponse response) {
    response.setHeader("X-Response-Red", "/42?user=ford&password=omg!what&flag=true");
    return "hello," + name + "," + port;
}

访问http://localhost:8500/producer/hello,从浏览器控制台看到:
 

 
响应头中的password的值被替换成***。

3、SaveSession GatewayFilter

SaveSession GatewayFilter在将调用转发到下游之前强制执行WebSession::save操作。当将Spring Session之类的东西与惰性数据存储一起使用时,这尤其有用,并且需要确保在进行转发调用之前已经保存了会话状态。

spring:
  cloud:
    gateway:
      routes:
      - id: save_session
        uri: https://example.org
        predicates:
        - Path=/foo/**
        filters:
        - SaveSession

4、SecureHeaders GatewayFilter

在响应加入以下头:

  • X-Xss-Protection:1 (mode=block)

  • Strict-Transport-Security (max-age=631138519)

  • X-Frame-Options (DENY)

  • X-Content-Type-Options (nosniff)

  • Referrer-Policy (no-referrer)

  • Content-Security-Policy (default-src 'self' https:; font-src 'self' https: data:; img-src 'self' https: data:; object-src 'none'; script-src https:; style-src 'self' https: 'unsafe-inline)'

  • X-Download-Options (noopen)

  • X-Permitted-Cross-Domain-Policies (none)

要更改默认值,请在spring.cloud.gateway.filter.secure-headers命名空间中设置相应的属性。可用属性如下:

  • xss-protection-header

  • strict-transport-security

  • x-frame-options

  • x-content-type-options

  • referrer-policy

  • content-security-policy

  • x-download-options

  • x-permitted-cross-domain-policies

 

spring:
  cloud:
    gateway:
      enabled: true
      routes:
        - id: Goods-Server  # 路由 id,唯一标识
          uri: lb://producer
          predicates:
            #  - Path=/**  # 断言,路由匹配条件,匹配 /product 开头的所有 api
              - Path=/producer/{segment}
          filters:
              - StripPrefix=1
              - SaveSession
              - SecureHeaders

访问http://localhost:8500/producer/hello,从浏览器控制台中看到:

5、SetPath GatewayFilter

SetPath GatewayFilter采用路径模板参数。它提供了一种简单的方法,通过允许路径的模板化段来操作请求路径。这使用了Spring Framework中的URI模板。允许多个匹配段。

spring:
  cloud:
    gateway:
      enabled: true
      routes:
        - id: Goods-Server  # 路由 id,唯一标识
          uri: lb://producer
          predicates:
            #  - Path=/**  # 断言,路由匹配条件,匹配 /product 开头的所有 api
              - Path=/producer/{segment}
          filters:
              - SetPath=/{segment}

将/producer/{segment}请求路径设置成/hello。访问http://localhost:8500/producer/hello,成功。

标签:GatewayFilter,producer,SpringCloud,gateway,https,之四,Path,id
From: https://www.cnblogs.com/shigongp/p/17378234.html

相关文章

  • 六、分布式SpringCloud环境--谷粒商城
    分布式SpringCloud环境一、注册中心:SpringCloudAlibabaNacos版本:nacos1.1.3链接:https://github.com/alibaba/nacos/releases?page=4主机端使用:(1)、下载zip,并解压,打开bin里的startup.cmd (2)、引入依赖、修改配置文件:导入nacos配置引入依赖<dependency><grou......
  • 浅谈Protocol Buffers、GRPC、Buf、GRPC-Gateway
    1.ProtocolBuffers什么是proto?ProtocolBuffers如何理解ProtocolBuffers?协议缓冲区非proto协议如何订立、传播以及维护?如何理解协议缓冲区?Protocolbuffers提供了一种语言中立、平台中立、可扩展的机制,用于以向前兼容和向后兼容的方式序列化结构化数据。它......
  • springcloud小应用
    一、Actuator修改Actuator端点前缀management.endpoints.web.base-path=/manage将原来的mappings端点的请求路径修改为urlMappingsmanagement.endpoints.web.path-mapping.mappings=request_mappings暴露部分端点management.endpoints.web.exposure.include=info,health,be......
  • SpringCloud实例
    前言:此文档是跟着课程来的,主要是为了熟悉SpringCloud和kubernetes是怎么结合的,后续用在测试cicd流水线上。1.基础环境1.1.java环境配置jdk1.8链接:下载mkdir-p/usr/local/src/jdk; cd/usr/local/src/jdktar-zxvfjdk-8u221-linux-x64.tar.gz-C/usr/localvim/e......
  • SpringCloud gatewayeFilter之一
    1、AddRequestHeaderGatewayFilterAddRequestHeaderGatewayFilter采用名称和值参数。例如:spring:cloud:gateway:enabled:trueroutes:-id:Goods-Server#路由id,唯一标识uri:lb://producerpredicates:......
  • 【SpringCloud】 Eureka 单机模式
    系统配置信息springboot版本:2.1.6.RELEASEjdk:1.8系统:Windows10工程结构父工程halo-cloud-parent子工程<注册中心>halo-cloud-server子工程<服务消费者>halo-cloud-consumer子工程<服务提供者>halo-cloud-providerhalo-coud-parent依赖引入<!--打......
  • SAP ERP系统MM模块常用增强之四:采购申请输入字段的校验检查
    在SAP/ERP项目的实施中采购管理模块(MM)的创建和修改采购申请一般都会有输入字段校验检查的需求,来防止业务人员录入错误或少录入数据,这方面需求部分是可以通过配置实现,比如一些字段是否必输,是否显示等,但是在实际项目中还是会遇到一些特殊的需求,比如需要一定逻辑判断的需求就不能通过......
  • 502 Bad Gateway Nginx
    502BadGatewayNginx页面提示502BadGatewayNginx简单来说,可以检查nginx的配置文件,查看其中的各个ip是否有效,端口是否通着像是我的情况是,数据库密码换了以后,多个应用的配置文件换了,但是漏了一个,然而用户反映是在五一放假结束以后才出现问题,实际上应该是因为数据库连接不上......
  • PM配置详解之四:维护和服务处理
    31.维护数值种类功能说明配置路径IMG->工厂维护和客户服务->维护和服务处理->基本设置->成本显示设置->维护数值种类业务示例配置步骤31.将成本元素分配给值分类功能说明配置路径IMG->工厂维护和客户服务->维护和服务处理->基本设置->成本显示设置->将成本元素分配给值分类业务......
  • 基于springcloud实现的医院信息系统
    访问【WRITE-BUG数字空间】_[内附完整源码和文档]医疗信息就诊系统,系统主要功能按照数据流量、流向及处理过程分为临床诊疗、药品管理、财务管理、患者管理。诊疗活动由各工作站配合完成,并将临床信息进行整理、处理、汇总、统计、分析等。本系统包括以下工作站:门诊医生工作站、药房......