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

  1. 问题来源:

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

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

在这里插入图片描述
如果请求地址是这种,参数直接跟在路径后面的: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 ;
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值