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

springcloud gateway转发后getServerName被更改的问题

该问题起源于一次将代码移植到微服务产生。当使用springcloud gateway更换掉nginx网关后,出现无法登录的情况,跟进发现转发的信息里丢失了Host

=== MimeHeaders ===
accept = */*
knife4j-gateway-code = ROOT
content-type = application/x-www-form-urlencoded
user-agent = Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36
request-origion = Knife4j
origin = http://localhost:7003
sec-fetch-site = same-origin
sec-fetch-mode = cors
sec-fetch-dest = empty
referer = http://localhost:7003/doc.html
accept-encoding = gzip, deflate, br
accept-language = zh-CN,zh;q=0.9
cookie = oxygentk=99d0a1b10bdd1443589a3416184d31984ed81136535c2e6498edbae12728f748; oxygenuid=36AB9A653683D50D4EC7E525BD9C96E9; charge-key={%22userId%22:3603%2C%22name%22:%22%E6%96%B0%E6%89%8B3603%E5%95%8A%22%2C%22icon%22:%22https://whalesing-web.oss-cn-guangzhou.aliyuncs.com/appres/forbidden.png%22}; AWX_RISK_ID=f6f3dd72e6cee7611eddf8328462756df97853ca; Hm_lvt_5819d05c0869771ff6e6a81cdec5b2e8=1684128760; Hm_lpvt_5819d05c0869771ff6e6a81cdec5b2e8=1684129236; lang=zh-CN; i_like_gogs=f529fa5db09e7bdd; JSESSIONID=20A183584BD3512F939D5696D56DA14A
forwarded = proto=http;host="localhost:7003";for="[0:0:0:0:0:0:0:1]:1926"
x-forwarded-for = 0:0:0:0:0:0:0:1
x-forwarded-proto = http
x-forwarded-prefix = /biz-core
x-forwarded-port = 7003
x-forwarded-host = localhost:7003
host = 192.168.1.196:8083
content-length = 0

上面看到host信息已经变成ip地址,而原地址被放到了x-forwarded-host。

因为request.getHeaders()会优先获得Host的Header,导致了request.getHeaders()的结果和原信息不一致。解决办法有两种

1)单独获得x-forwarded-for头部信息

2)设置gateway按原头部进行转发。添加参数PreserveHostHeader:
bootstrap.yml

server:port: 7003
spring:application:name: gatewaycloud:nacos:default-filters:- PreserveHostHeader #发送原主机头discovery:namespace: publicserver-addr: 192.168.1.196:8848

http://www.lryc.cn/news/207583.html

相关文章:

  • Linux - firewall-cmd 命令添加端口规则不生效排查
  • iPhone手机屏幕分辨率
  • 文件包含漏洞(3),日志利用, 图片木马利用
  • java面试--线程总结
  • Angular-02:环境等说明
  • pgsql 分组查询,每组取10条
  • python,pandas ,openpyxl提取excel特定数据,合并单元格合并列,设置表格格式,设置字体颜色,
  • chatgpt论文润色 降重
  • 第四章 文件管理 七、文件共享
  • 带过期时间的localstorage封装
  • mac系统u盘启动盘制作教程,更新至macOS Sonoma 14
  • 基于单片机的智能电子鼻的设计
  • 代码随想录图论 第三天 | 130. 被围绕的区域 417. 太平洋大西洋水流问题
  • 二、【常用的几种抠图方式一】
  • 常见面试题-MySQL专栏(一)
  • 使用Docker部署Apache Superset并实现公网远程访问
  • buuctf_练[CISCN2019 华东南赛区]Web4
  • 国际腾讯云直播推流配置教程!
  • RocketMQ与Kafka差异对比:从架构到性能细节,解析两者在可靠性、扩展性和可用性等方面的优劣
  • 【数智化人物展】同方有云联合创始人兼总经理江琦:云计算,引领数智化升级的动能...
  • SpringMVC Day 03 : 处理静态资源
  • activiti 用户任务中的执行监听器
  • leetcode做题笔记200. 岛屿数量
  • HTTP 之 options预请求 nginx 解决跨域 postman调试跨域问题
  • MFC知识点
  • Spring-手写模拟Spring底层原理
  • Scala【集合常用方法和函数操作(下)】
  • JS加密/解密之那些不为人知的基础逻辑运算符
  • flinksql kafka到mysql累计指标练习
  • pdf转jpg的方法【ps和工具方法】