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

  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.hqwc.cn/news/19362.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于RWKV-Runner大语言模型系统

RWKV Runner 旨在消除大语言模型的使用门槛,全自动处理AI对话,并且提供了OpenAI API兼容的接口。使用起来简单方便,但是还是比较吃机器,显存2G到32G都可以使用,根据自己的模型选择即可。 总结起来: 使用起来方便简单,上手容易。需要有电脑基础,很多地方还不是傻瓜化。需…

Android JetPack深入分析DataBinding源码

前言 数据绑定库是一种支持库,借助该库,您可以使用声明性格式(而非程序化地)将布局中的界面组件绑定到应用中的数据源。 DataBinding支持双向绑定,数据变化的时候界面跟着变化,界面变化也同步给数据&…

【C语言】1-Visual C++ 2010 的简单使用和第一个 C 语言程序

1. Visual C++ 2010 的简单使用 1.1 面板介绍 1.2 新建C语言项目 打开 Visual C++ 2010,点击 New Project 根据下面的图示进行操作,其中需要注意 ③:这里输入的为项目名(建议和我的命名保持一致) ④:这里是项目存放的位置,可以自己选择,最好不要有中文路径(只要是使…

selenium 浏览器托管

selenium 浏览器托管,是启动一个浏览器,调试代码,可以运行当前调试代码,不用从启动浏览器开始从头执行 在谷歌浏览器chrome.exe 目录中打开cmd 输入下面目录,启动器浏览器 chrome.exe --remote-debugging-port9222 -…

使用docker部署rancher并导入k8s集群

前言:鉴于我已经部署了k8s集群,那就在部署rancher一台用于管理k8s,这是一台单独的虚拟环境,之前在k8s的master节点上进行部署并未成功,有可能端口冲突了,这个问题我并没有深究,如果非要通过修改…

数据结构05:树与二叉树[C++][并查集]

图源:文心一言 Chat GPT生成,代码的核心思想与王道咸鱼老师的视频虽然类似,但是在具体实现上毕竟还是略有差别~~因此,如果对考研方向的并查集代码感兴趣,可以查看—— 王道咸鱼老师的视频:{5.5_2_并查集_…

【Elasticsearch】文档操作

目录 3.文档操作 3.1.新增文档 3.2.查询文档 3.3.删除文档 3.4.修改文档 3.4.1.全量修改 3.4.2.增量修改 3.5.总结 3.文档操作 3.1.新增文档 语法: POST /索引库名/_doc/文档id {"字段1": "值1","字段2": "值2"…

遥感云大数据在灾害、水体与湿地领域典型案例实践及GPT模型应用

​ ​ ​ ​ 第一部分 基础实践 一 平台及基础开发平台 GEE平台及典型应用案例介绍; GEE开发环境及常用数据资源介绍; ChatGPT、文心一言等GPT模型介绍 JavaScript基础简介; GEE遥感云重要概念与典型数据分析流程; …

Hightopo 使用心得(4)- 3D 场景 Graph3dView 与 Obj 模型

在前一篇文章《Hightopo 使用心得(3)- 吸附与锚点》中,我们在结尾处提到过 HT 的 3D 场景。这里我们通过代码建立一个 3D 场景并添加一个 Obj 模型来介绍一下 HT for Web 在 3D 场景和模型加载方面的使用。 这是我们最终实现的效果&#xff…

QML Canvas 几何变换(平移/旋转/缩放)

作者: 一去、二三里 个人微信号: iwaleon 微信公众号: 高效程序员 几何变换是 Canvas 提供的一项强大的图形处理能力,主要涉及平移、旋转、缩放。通过运用这些功能,我们有了更大的创作自由度,可以很容易的在 QML 中实现一些出色的游戏效果、动态图表、交互式数据可视化等…

装机——固态硬盘的选择

文章目录 问题描述知识学习硬盘分类PCIe接口SATA接口M.2接口 通道PCI-E通道SATA通道SAS通道FC通道 通信协议IDE协议AHCI协议NVMe协议 硬盘参数表主控存储颗粒SLCMLCTLCQLC失败的颗粒(需要购买原装厂商的存储颗粒) 问题解决问题总结 问题描述 女朋友笔记本…

2023-7-10-第十五式命令模式

🍿*★,*:.☆( ̄▽ ̄)/$:*.★* 🍿 💥💥💥欢迎来到🤞汤姆🤞的csdn博文💥💥💥 💟💟喜欢的朋友可以关注一下&#xf…