当前位置: 首页 > news >正文

SpringBoot请求重定向目标地址不正确问题分析排查

问题现象

SpringBoot应用中通过如下代码进行请求重定向

response.sendRedirect("/?Authorization=" + token);

目的是重定向到当前地址根路径并带上token,让前端实现自动登录,功能很简单,但是结果请求并没有重定向到我预想的外网地址,而是重定向到了服务器内网IP上,并且端口也是当前springboot应用的端口,而不是外网nginx暴露的端口

问题原因

比较容易想到的原因应该是nginx转发时未配置proxy_set_header参数,导致应用未获取到外网的IP端口,只需要增加如下配置即可:

location ^~ /api/ {proxy_set_header Host $host:$server_port;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://172.27.1.12:9097/;
}

但是经过排查并不只是这个原因,分析我们的整个请求链路:
Nginx ----> Spring Cloud Gateway -----> SpringBoot应用
猜测除了Nginx可能这里的Gateway也存在类似的问题,经过排查确实有可能会出现这种情况,Gateway中也有如下的一些配置支持:

spring:cloud:gateway:x-forwarded:enabled: trueforwarded:enabled: true

但是Gateway的默认配置都是true,如果没有特地修改,应该也不会是这里的问题

解决方案

最后就剩下springboot应用本身的问题了,找到如下配置:

server:forward-headers-strategy: framework

这里如果不配置的话默认是none,就不会处理任何转发头,完全忽略 X-Forwarded-* 头信息,这种只适合没有反向代理或负载均衡器的直接将springboot服务端口暴露访问的情况,我们这里经过2层转发,最好就不适用默认配置了。
另外两种取值:
native:使用底层容器(Tomcat/Jetty/Undertow等)的原生支持处理转发头
framework:使用Spring框架的 ForwardedHeaderFilter 处理转发头
实测两种好像都行,我这里选择了framework
配置好后重启服务,再次尝试请求重定向,果然就重定向到了外网的IP端口上了

http://www.dtcms.com/a/318855.html

相关文章:

  • 六类注定烂尾的甲方软件外包必看!这类甲方不要理-优雅草卓伊凡
  • 上门家教 app 用户端系统模块设计
  • 区块链简介
  • C++位图(Bitmap)与布隆过滤器(Bloom Filter)详解及海量数据处理应用
  • java excel转图片常用的几种方法
  • 分布式接口限流与防重复提交实现方案
  • 快速搭建vue3+flask实现一个异物检测项目
  • RP2040下的I2S Slave Out,PIO状态机(四)
  • MT信号四通道相关性预测的Informer模型优化研究
  • 此芯p1开发板使用OpenHarmony时llama.cpp不同优化速度对比(GPU vs CPU)
  • 掌握工程化固件烧录,开启你的技术进阶之路-FPGA ISE(xilinx)
  • 微软推出“愤怒计划“:利用AI工具实现恶意软件自主分类
  • Daemon Tools for Mac —— 专业虚拟光驱与磁盘映像工具
  • 手机控制断路器:智能家居安全用电的新篇章
  • Casrel关系抽取
  • 如何快速开发符合Matter标准的智能家居设备?
  • 在 openEuler 24.03 (LTS) 上安装 FFmpeg 的完整指南
  • 接入小甲鱼数字人API教程【详解】
  • 物联网架构全解析:华为“1+2+1”与格行随身WiFi,技术如何定义未来生活?
  • 优选算法 力扣 LCR 179. 查找总价格为目标值的两个商品 双指针降低时间复杂度 C++题解 每日一题
  • 界面组件DevExpress WPF中文教程:网格视图数据布局 - 紧凑模式
  • 代企业开发钉钉数据对接
  • hadoop HDFS 重置详细步骤
  • [bug]AttributeError: module ‘typing_extensions‘ has no attribute ‘TypeVar‘
  • 人工智能的20大应用
  • 图论(1):图数据结构
  • 第二十七天(数据结构:图)
  • uni-app vue3 小程序接入 aliyun-rtc-wx-sdk
  • Android 之 Jetpack- Room
  • 力扣238:除自身之外数组的乘积