当前位置:   article > 正文

get请求传入[ ]这类字符 返回400错误解决_前端发送get请求时参数中含有中括号[]导致报错400bad request

前端发送get请求时参数中含有中括号[]导致报错400bad request

问题描述:项目前端使用get请求进行数据查询,当传入的参数中含有'['、']'字符时,接口返回错误编码400;传入参数中不含则能正常查询数据。

原因: 项目进行了升级,使用的tomcat换成了更高版本的。

         高版本的tomcat,有个新特:严格按照RFC 3986规范进行访问解析,而 RFC 3986规范定义了Url中只允许包含英文字母(a-zA-Z)、数字(0-9)、-_.~4个特殊字符以及所有保留字符

       因为get请求会将参数拼接在url之后,故参数中包含'['、']'字符就会返回400。

解决办法:

        1.将get请求替换为post请求(替换成本过高);

        2.使用低版本的tomcat

        3.使用高版本的tomcat,修改tomcat配置

        4.对请求参数进行编码,可以使用encodeURI()函数;

我这里使用的第4种,因为项目中使用的是统一的get请求方法,故我只需要修改get方法即可

  1. get(url, params) {
  2. let _params
  3. if (Object.is(params, undefined)) {
  4. _params = ''
  5. } else {
  6. _params = '?'
  7. for (const key in params) {
  8. if (params.hasOwnProperty(key) && params[key] !== null) {
  9. _params += `${key}=${params[key]}&`
  10. }
  11. }
  12. }
  13. _params = encodeURI(_params)
  14. return service.get(`${url}${_params}`)
  15. },

(16条消息) get请求的参数包含中括号[]时,报错400_vue修改tomcat配置,让它不再去拦截有特殊符号的url_呀呀夫斯基的博客-CSDN博客https://blog.csdn.net/tangran0526/article/details/99977240

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/305014
推荐阅读
相关标签
  

闽ICP备14008679号