spring cloud zuul网关踩坑——经过zuul网关后字符串参数多一倍的问题
保存音频文件接口
http://xxxx/ecc/api/ei/saveSounds?content=开心1&xxxxxx=xxxxx&sign=xxxxx
header:access-token=3756d53e-a28f-47da-bfc7-3898a418b4c6
body:soundFile=录音文件.mp3
经过zuul网关之后,字符串参数content=开心1,结果变成了“开心1,开心1”,不传文件时正常。
解决方案:
网关配置文件加个参数:
zuul: #上传文件服务的前缀 servlet-path: /file #需要忽略的头部信息,不在传播到其他服务 sensitive-headers: Access-Control-Allow-Origin ignored-headers: Access-Control-Allow-Origin,H-APP-Id,Token,APPToken
请求url加上/file前缀就解决问题。
旧请求url:http://xxxx/ecc/api/ei/saveSounds?content=开心1&xxxxxx=xxxxx&sign=xxxxx
新请求url:http://xxxx/file/ecc/api/ei/saveSounds?content=开心1&xxxxxx=xxxxx&sign=xxxxx
原理:
默认请求是spring MVC,网关上传文件时会有许多问题,上传文件时走zuul servlet就没有问题了,默认servlet-path=/zuul,我这里改为了/file。
另一个坑点
我的网关会解析header和body里的参数,合起来校验sign签名的有效性。
所以,一旦body里是文件就会I/O异常。
解决办法:走zuul servlet时body是文件,我们跳过解析body里的参数。
分类:
Java
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?