关于SpringBoot、Nginx 请求参数包含 [] 特殊符号 返回400状态

news2025/1/11 16:01:02
  1. 问题来源:

使用RESTful风格发送带有特殊符号(如:点、大括号等)的请求,当使用Nginx做地址映射时会返回报"HTTP Status
400-Bad Request"的错误,这个时候我们需要对Nginx的映射方式做一下调整。
Nginx调整完发现跳转后又报了同样的错误,是应为SpringBoot也需要做兼容

Nginx

在这里插入图片描述
如果请求地址是这种,参数直接跟在路径后面的:http://678910.top/sms/menu/{12345678}

location /sms/menu {
#     原映射方式
#     proxy_pass http://system/menu;
#     新的映射方式  
      if ($request_uri ~* ^/sms/menu/(.*)$) {
        proxy_pass   http://system/menu/$1; 
      }
#     header信息设置
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Host $http_host;
      proxy_set_header X-Forwarded-Port $server_port;
      proxy_set_header X-Forwarded-Proto $scheme;
    }
释义:
​1. $request_uri表示完整url去除最前面$host剩下的部分​,如:http://678910.top/sms/menu/{12345678},去除​$host后剩下的部分就是:​/sms/menu/{12345678}

​2. ​匹配正则表达式时,匹配到的值,从左到右分别对应$1、$2、$3、…、、$8、$9,如以上Nginx中匹配的$1 = {12345678}

如果是使用”?“拼接:http://192.168.163.59:8007/approve/loanFile/download?fileName=ZXBH202307121834000201%E5%A4%A7%E5%8D%8E%E5%AE%A1%E5%AD%97[2023]008818(1).pdf

在这里插入代码片

SpringBoot

springBoot 启动类 添加 bean

@Bean
public TomcatServletWebServerFactory tomcatServletWebServerFactory (){
 
   // 修改内置的 tomcat 容器配置
   TomcatServletWebServerFactory tomcatServlet = new TomcatServletWebServerFactory();
   tomcatServlet .addConnectorCustomizers(
      (TomcatConnectorCustomizer) connector -> connector.setProperty("relaxedQueryChars", "[]{}")
   );
 
   return tomcatServlet ;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/746513.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day42: 121. 买卖股票的最佳时机,122.买卖股票的最佳时机II

目录 121. 买卖股票的最佳时机 思路 122.买卖股票的最佳时机II 思路 121. 买卖股票的最佳时机 121. 买卖股票的最佳时机 - 力扣(LeetCode) 思路 1. 确定dp数组及其下标含义 dp[i][0] 表示第i天持有股票所得最多现金 dp[i][1] 表示第i天不持…

爷孙或者更深组件间传值

如图写法即可 父: provide() {return {errorMessage: this.refTable,}},子: inject: [errorMessage],

组合模式:构建树形结构的灵活设计

组合模式是一种结构型设计模式,它允许我们将对象组合成树形结构,以表示“部分-整体”的层次结构。本文将深入探讨组合模式的原理、结构和使用方法,并通过详细的 Java 示例代码来说明。 1. 组合模式的定义 组合模式是一种将对象组合成树形结…

Maven引入Jacoco插件后无法生成jacoco.exec执行文件

目录 jacoco.exec网上常见关于未生成jacoco.exec原因最终解决方案不生效原因解决方案 完整jacoco插件配置 jacoco.exec 执行数据文件,只有生成该文件,才表示引入插件jacoco成功生效 网上常见关于未生成jacoco.exec原因 网上找了一下解决方式基本都是…

windows下使用arp 协议

/ //自动扫描局域网存活主机 本程序是利用arp协议去获取局域网中的存活主机 arp协议概述 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请…

「Paraverse平行云」入选IDC MarketScape中国实时云渲染解决方案

近日,全球领先的IT研究与咨询顾问机构IDC发布了《IDC MarketScape:中国实时云渲染解决方案2023年厂商评估》报告。作为在实时云渲染技术领域具有代表性的技术提供商,「Paraverse平行云」成功入选报告。 IDC报告通过综合考量厂商在产品、市场…

一文搞懂Goroutine之间的通信Channel

文章目录 Channel定义通道初始化通道通道的操作1、发送/接收2、关闭 多返回值模式for range获取通道值 单向通道selectgoroutine、channel案例 道阻且长,行则将至,行而不辍,未来可期🌟。人生是一条且漫长且充满荆棘的道路&#xf…

C++函数cincout的基本用法

C的输入输出格式可比C语言的简单得多&#xff0c;输入函数是cin()&#xff0c;输出函数是cout。 首先是cin的基本用法如下 (假设n 5) #include <iostream> using namespace std; int main() {int n;cin>>n;return 0; } 而它的结果则是 cin不仅可以输入int类型…

从单目数据生成3D模型,Meta智能眼镜摄像头校正算法揭秘

众所周知&#xff0c;Meta下一个目标就是AR眼镜&#xff0c;尽管开发AR比VR面临更多复杂的难题&#xff0c;因此可能还要过一段时间才能看到Meta的AR眼镜。目前&#xff0c;该公司已推出了第一代Ray-Ban Stories智能眼镜&#xff0c;特点是搭载的双摄像头不仅可以拍照&#xff…

Verilog基础之十五、锁存器实现

目录 一、前言 二、工程设计 2.1 工程代码 2.2 综合结果 2.3 Latch实现 一、前言 在之前的文章中介绍过寄存器&#xff0c;本节介绍一个类似的逻辑单元&#xff1a;锁存器。在大部分的资料和文章介绍中&#xff0c;都是告诉读者设计中应尽量避免出现锁存器&#xff0c;这主…

从0到1,带你深入了解react fiber

react16之后&#xff0c;react引入了fiber架构&#xff0c;那么它究竟是什么&#xff0c;如何实现的呢&#xff1f;下面就让笔者带你掰扯掰扯&#xff0c;如有错误&#xff0c;欢迎指正 目录 渲染过程 react15 react16 为什么要引入fiber 不可中断原因 fiber详解 是什么…

百度墨斗鱼文库创作中心源码分析

前言 公司解散&#xff0c;待业中&#xff0c;耗时一天研究了一下百度墨斗鱼文库创作中心源码。实现了后台自动完成任务并通知。 下面主要分析一下实现思路和难点 一&#xff0c;实现思路 调用接口查询未回答的题目列表 合并多个tab下的题目 设置黑白名单&#xff0c;这里…

你知道为什么不用XFP光模块了吗?

在光纤通信应用领域中&#xff0c;10G光模块凭借着较低的成本和功耗被广泛应用于学校、企业等应用场景中。XFP和SFP是10G光模块常见的两种封装类型&#xff0c;那为什么现在市场上XFP光模块应用比较少了呢&#xff1f;下面我们来简单分析一下原因。 一、XFP与SFP光模块的概述 …

从小白到大神之路之学习运维第58天--------Firewalld防火墙

第三阶段基础 时 间&#xff1a;2023年7月12日 参加人&#xff1a;全班人员 内 容&#xff1a; Firewalld防火墙 目录 Firewalld防火墙 一、防火墙 1、netfilter和防火墙管理工具 2、防火墙配置模式 3、Firewalld数据流处理的方式 4、firewalld区域类型 1&#x…

【SVN wc.db 删除不掉的问题】

SVN wc.db 删除不掉的问题 方案1&#xff1a;任务管理器 >性能 >打开资源监视器 > CPU >搜索句柄&#xff0c;关闭相关线程&#xff0c;重试删除。若删除explorer.exe导致资源管理器不显示&#xff0c;在任务管理器新建该任务即可“explorer.exe” 方案2&#xff1…

2023-07-12:RocketMQ如何做到消息不丢失?

2023-07-12&#xff1a;RocketMQ如何做到消息不丢失&#xff1f; 答案2023-07-12&#xff1a; RocketMQ通过刷盘机制、消息拉取机制和ACK机制等多种方式来确保消息投递的可靠性&#xff0c;防止消息丢失。 1.刷盘机制 RocketMQ中的消息分为内存消息和磁盘消息&#xff0c;内…

Acwing.858 Prim算法求最小生成树(朴素Prims算法)

题目 给定一个n个点m条边的无向图&#xff0c;图中可能存在重边和自环&#xff0c;边权可能为负数。求最小生成树的树边权重之和&#xff0c;如果最小生成树不存在则输出impossible。 给定一张边带权的无向图G(V,E)&#xff0c;其中V表示图中点的集合&#xff0c;E表示图中边的…

赛效:如何用在线压缩GIF图片

1&#xff1a;在电脑网页上打开并登录快改图&#xff0c;点击左侧菜单栏里的“GIF压缩”。 2&#xff1a;点击页面中间的上传按钮&#xff0c;将电脑本地的GIF文件上传上去。 3&#xff1a;GIF文件上传成功后&#xff0c;设置下方压缩设置&#xff0c;点击右下角“开始压缩”。…

APP外包开发硬件通讯协议

开发APP时会遇到需要与硬件设备通讯的业务场景&#xff0c;常见的硬件设备有健康设备(手环、血压计、血糖仪等)、智能家居设备(冰箱、灯、电视等)、工业设备等等&#xff0c;这些设备的通讯要求各不相同&#xff0c;因此通讯协议也不相同。今天和大家分享这方面的知识&#xff…

buu-Reverse-[2019红帽杯]childRE

目录 [2019红帽杯]childRE 修饰函数名和函数签名是什么&#xff1f; 对于变换部分的具体分析&#xff1a; [2019红帽杯]childRE 下载附件&#xff0c;查壳&#xff0c;无壳 在IDA中打开&#xff0c;定位主函数 int __cdecl main(int argc, const char **argv, const char …