url请求中带有特殊符号{}|返回400的问题Failed to load resource: the server responded with a status of 400 (Bad Reque

url中带json数据,返回400

例如:

原因:url会自动将引号转译,但是不会自动转译{},{}需要手动转译。

 

根据rfc规范,url中不允许有 |,{,}等特殊字符,但在实际生产中还是有些url有可能携带有这些字符,特别是|还是较为常见的。在tomcat升级到7以后,对url字符的检查都变严格了,如果出现这类字符,tomcat将直接返回400状态码。

         后来有人对此提出了异义,见:    https://bz.apache.org/bugzilla/show_bug.cgi?id=60594

   经过一番讨价还价,tomcat的开发人员增加一项设置,允许配置在url可以出现的特殊字符,但也仅限于|,{,}三种,见:http://tomcat.apache.org/tomcat-8.0-doc/config/systemprops.html#Other

    该项设置在以下版本的tomcat中有效:

    - 8.5.x for 8.5.12 onwards

    - 8.0.x for 8.0.42 onwards

    - 7.0.x for 7.0.76 onwards

解决方案:

在tomcat目录/conf/catalina.properties下找到并修改

tomcat.util.http.parser.HttpParser.requestTargetAllow=|,{,}

重启tomcat就可以了

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Failed to load resource: the server responded with a status of 400 (Bad Request)"是一个常见的网络请求错误。它表示客户端向服务器发送了一个无效的请求,导致服务器无法理解或处理该请求。 这个错误可能有多种原因,以下是一些可能的原因和解决方法: 1. 请求参数错误:请确保你发送的请求参数是正确的,并且符合服务器的要求。检查请求URL请求头、请求体等是否正确。 2. 缺少必要的请求参数:有些接口可能需要特定的参数才能正常工作,如果缺少了必要的参数,服务器可能会返回400错误。请检查接口文档或与后端开发人员确认所需的参数。 3. 参数格式错误:如果请求参数的格式不正确,比如数据类型不匹配、格式不符合要求等,服务器也会返回400错误。请确保参数的格式正确,并且与服务器要求的一致。 4. 请求体大小超过限制:有些服务器对请求体的大小有限制,如果请求体过大,服务器可能会返回400错误。请检查请求体的大小,并根据服务器要求进行调整。 5. 服务器端错误:有时候400错误可能是由于服务器端的问题引起的,比如服务器程序bug、配置错误等。这种情况下,你可以联系服务器管理员或开发人员进行排查和修复。 总之,"Failed to load resource: the server responded with a status of 400 (Bad Request)"错误表示客户端发送了一个无效的请求,需要检查请求参数、格式、大小等方面是否符合服务器的要求,并与后端开发人员进行沟通和排查。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值