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

这篇具有很好参考价值的文章主要介绍了关于SpringBoot、Nginx 请求参数包含 [] 特殊符号 返回400状态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. 问题来源:

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

Nginx(此处其实不是NGINX的问题,解决SpringBoot即可)

关于SpringBoot、Nginx 请求参数包含 [] 特殊符号 返回400状态,spring boot,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文章来源地址https://www.toymoban.com/news/detail-555436.html

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

到了这里,关于关于SpringBoot、Nginx 请求参数包含 [] 特殊符号 返回400状态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring/SpringBoot 过滤器修改、获取http 请求request中的参数 和 response返回值,比如修改请求体和响应体的字符编码

    通过自定义filter,RequestWrapper,ResponseWrapper 处理请求和响应数据,比如修改请求体和响应体的字符编码 1.request 和 response 中的数据都是 存在流中的(缓存中)获取一次就没有了,需要重新写回去。所以需要两个包装类分别继承HttpServletRequestWrapper 和 HttpServletResponseWrapper 对 r

    2024年02月15日
    浏览(41)
  • postman请求参数中包含特殊字符问题

    今天使用postman做测试时发现了一个问题,我的参数传递到后台时,加号变成了空格研究了一番,最成功找到了原因。 首先在postman中,如果参数是填在params模块中时,参数都是会拼接在url后面的。 因为我们的参数带有特殊字符,且参数拼接到了url中, 所以特殊字符被转义了

    2024年02月11日
    浏览(41)
  • 【Spring MVC学习】连接 && 接收请求参数 && 响应返回参数

    目录 前言:认识Spring MVC 🌷1、什么是MVC? 一、建立连接(5个注解) 🌷1、@RequestMapping注解:注册接⼝的路由映射(默认返回页面) 🌷2、@ResponseBody注解:表示返回的是数据 🌷 3、组合注解@RestController = @ResponseBody + @Controller 🌷4、支持Get请求的2种写法@GetMapping + @RequestMapp

    2024年02月16日
    浏览(41)
  • curl请求常用参数和返回码

    curl是一个用于传输数据的工具,支持各种协议,如HTTP、FTP、SMTP等。以下是一些常用的curl请求参数及其作用: -X, --request:指定HTTP请求方法,常见的有GET、POST、PUT、DELETE等。 -H, --header:设置HTTP请求头,用于传递额外的请求信息,例如Authorization、Content-Type等。 -d, --data:设置

    2024年02月05日
    浏览(29)
  • springcloud gateway中打印请求参数,请求路径和返回数据

    在平时前后端联调过程中,需要查询日志看到前端请求的接口,上送的参数,返回数据这样有利于我们定位问题;话不多说直接上代码。 在gateway模块中,新建一个filter的包,然后创建改类,即可在控制台和日志文件里面打印出请求参数,只写了常用的 post 和 get 请求的方式;

    2024年02月15日
    浏览(39)
  • Spring-Cloud-Gateway修改请求(json,form带文件请求)参数,返回值参数

    新项目需要在getway统一做入参、出参加解密,记录日志。记录一下form,x-www-form-urlencoded , json 这几种修改数据的方式。 gateway做拦截器是实现GlobalFilter接口,修改json方式网上有很多文章,后来又想研究研究能不能实现修改form-data参数,以及文件请求,后者文章不多大部分是怎

    2024年02月16日
    浏览(47)
  • 如何为Postman请求自动添加请求返回值作为另一请求传入参数

            在请求的时候会遇到需要带TOKEN的请求,就需要先请求一次获取TOKEN的请求再将返回的值粘贴到下次要请求的地方,这样很麻烦,而POSTMAN提供了方法自动填入传输参数。这里需要两个接口,1号接口是获取TOKEN的,2号接口是需要使用TOKEN的。 这里设置了一个connecti

    2024年02月13日
    浏览(38)
  • Postman实现上一个请求的返回值用作下一个请求的参数

    目录 一、postman设置环境变量 二、将上个接口的返回值set到环境变量中 三、将环境变量值引入下一个接口参数中 四、测试 这个环境变量就是我们一个公共的变量,上一个请求返回的值赋值给此环境变量,下个请求再把此环境变量引入当作参数。 注意:保存完要将右上角环境

    2024年02月07日
    浏览(29)
  • Django自定义视图类及实现请求参数和返回参数加解密

      定义的数据库模型,也就是models.py的模型   序列化文件 serializer.py    然后新建一个视图文件 依次继承get、post、put、delete,实现查、增、改、删。       接下来对请求参数,及返回参数进行加密,加解密可以看我之前的文章 先新建一个MyResponse.py,自定义自己的返回类

    2024年02月06日
    浏览(70)
  • postman参数化-将上一个接口的返回作为下一个接口的请求参数

    在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是: 1、获取上一个接口的返回值 2、将返回值设置成环境变量或者全局变量 3、设置下一个接口的参数形式 以 下边接口为例: 一、在Tests里设置环境变

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包