一、SpringCloudGateway作为服务器端

1、在接收到包含Forwarded或X-Forwarded-*的HTTP请求头时,会根据部署环境决定是否进行解析

根据部署环境决定是否进行解析的代码可以如下类中找到:

org.springframework.boot.autoconfigure.web.embedded.NettyWebServerFactoryCustomizer

若部署在容器云环境,则默认是要进行解析的,支持的容器云环境对应的环境参数可以在如下类中找到

org.springframework.boot.cloud.CloudPlatform

如果想让它不解析,则配置参数:

server.forwardHeadersStrategy=none

若不部署在容器云,则默认是不进行解析的

如果想让它解析,则配置参数:

server.forwardHeadersStrategy=native

2、Forwarded或X-Forwarded-*的HTTP请求头如何解析定义在如下类中:

reactor.netty.http.server.DefaultHttpForwardedHeaderHandler

它会优先解析Forwarded,若Forwarded不存在才解析X-Forwarded-*,

Forwarded例子如下:

Forwarded:proto=http;host="15.62.25.113:8099";for="15.62.25.117:41668"

X-Forwarded-*例子如下:

X-Forwarded-For:解析成远程IP,若有多个取第一个
X-Forwarded-Host:解析成本地IP,若有多个取第一个
X-Forwarded-Port:解析成本地port,若有多个取第一个
X-Forwarded-Proto:解析成scheme,若有多个取第一个

此时如下API就能拿到这两个地址,原始的地址会被替换

ServerHttpRequest.getLocalAddress()
ServerHttpRequest.getRemoteAddress()

二、SpringCloudGateway作为客户端

默认情况下,向外发送HTTP请求会生成Forwarded和X-Forwarded-*的HTTP请求头

生成Forwarded请求头的类如下:

org.springframework.cloud.gateway.filter.headers.ForwardedHeadersFilter

生成X-Forwarded-*请求头的类如下:

org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter

若不想生成这些HTTP请求头,可分别配置如下参数进行关闭:

spring.cloud.gateway.forwarded.enabled=false
spring.cloud.gateway.x-forwarded.enabled=false

SpringCloud:SpringCloudGateway对Forwarded和X-Forwarded-*处理分析相关推荐

  1. springcloud ribbon @LoadBalance负载均衡源码流程分析

    一.编写示例 1.服务端 pom.xml <properties><java.version>1.8</java.version><spring-cloud. ...

  2. SQL Server中一个隐性的IO性能杀手-Forwarded record

    简介 最近在一个客户那里注意到一个计数器很高(Forwarded Records/Sec),伴随着间歇性的磁盘等待队列的波动.本篇文章分享什么是forwarded record,并从原理上谈一谈为什么 ...

  3. Spring-Cloud-Gateway之代码注入漏洞及解决

    目录 1. 背景 2. 漏洞简介 3. 原理 3. 1Spring-Cloud-Gateway的原理 3.1.1 核心流程 3.1.2 流程说明 3.1.3 常见的 API 网关实现方案主要有以下 6 ...

  4. SpringCloud Gateway微服务网关实战与源码分析-上

    概述 定义 Spring Cloud Gateway 官网地址 https://spring.io/projects/spring-cloud-gateway/ 最新版本3.1.3 Spring Cl ...

  5. SpringCloudGateway配置https

    一.生成证书 证书本应是花钱买,客户端才能通过根CA仓库识别证书. 如果是自定义生成的证书,客户端访问时,会提示不安全的链接 是否继续访问,或者客户端可以将证书导入自己的本地CA仓库. 生成证书可以通 ...

  6. 什么是微服务网关?SpringCloud Gateway保姆级入门教程

    什么是微服务网关 SpringCloud Gateway是Spring全家桶中一个比较新的项目,Spring社区是这么介绍它的: 该项目借助Spring WebFlux的能力,打造了一个API网关.旨 ...

  7. CVE-2022-22947 SpringCloud GateWay SPEL RCE 漏洞分析

    漏洞概要 Spring Cloud Gateway 是Spring Cloud 生态中的API网关,包含限流.过滤等API治理功能. Spring官方在2022年3月1日发布新版本修复了Spring ...

  8. SpringCloud系列之六

    SpringCloud服务降级熔断 1. 服务故障场景分析 缓存雪崩是针对Redis出现大面积缓存失效导致请求批量拥堵到数据库导致数据卡顿,至使服务出现不可用的情况,对于在微服务的链式调用的场景下,其 ...

  9. SpringCloud学习一(回顾之前学的微服务知识点、springcloud入门概述、服务提供者和消费者)

    一.回顾之前,如何学习springcloud 回顾之前的知识? JavaSE 数据库 前端 Servlet Http Mybatis Spring SpringMVC SpringBoot Dubbo ...

最新文章

  1. 卓越只值1.5亿RMB?
  2. 不同进制数的表示方法
  3. dll文件懒加载_一步步学习NHibernate(5)——多对一,一对多,懒加载(2)
  4. python查看对象占用内存_『Python』内存分析_List对象内存占用分析
  5. MySQL高级知识(十六)——小表驱动大表
  6. 吴恩达《机器学习》--- Logistic分类
  7. 生活中的数学 —— 几何
  8. java aspose例子_在Java中使用Aspose对文档操作示例
  9. lintcode1485. 圣杯咒语
  10. 闲鱼双11全链路营销体系初体验
  11. GMIS 2017大会圆桌论坛:机器智能时代的全球化进程
  12. openwrt pptpd start 报错validation filed
  13. 微信小程序文本框保留两位小数(非四舍五入)
  14. 从测序到宏基因组:聚焦菌群生信分析方法最前沿
  15. 神经网络预测结果都一样,神经网络预测结果分析
  16. 企业如何做好网络营销?
  17. Golang包管理工具(四)之go-modules的使用
  18. ppt中如何加入flash
  19. TP-LINK 设置固定ip
  20. 纸飞机飞行曲线matlab,纸飞机飞行最远的抛出角度数学建模分析

热门文章

  1. vue使用canvas渲染pdf
  2. iOS 判断机型是否为iPhone Xr
  3. 【随机信号分析1】随机变量和随机信号的仿真与特征估计
  4. supervisor php cli,supervisor常用命令
  5. 粒子动画,做礼物,雪花等特效
  6. 华为鸿蒙小插件,鸿蒙OS2.0系统
  7. 公司杀手 第四章 欧兰多
  8. css body的背景颜色设置
  9. 什么是RSA国产数字证书?
  10. 从PDF文件中提取嵌入的MP4视频文件