请求头Content-Length设置不正确导致的JSON parse error

今天无意间发现请求头的Content-Length会影响POST请求参数在服务器端的接收长度。

 

场景一:未美化的请求参数发送请求,成功接收响应。此时Header里面的Content-Length长度为216。结果成功接收响应数据。

 

 

 

场景二:与场景一的任何参数一致的情况下,就美化了下请求参数,导致报错了。个人理解为美化参数后,将参数添加了一下换行符和空格,导致入参数据量变大

 

 

参照:写一个拦截器获取服务端获取的请求参数,发现参数不完整,被截取了后面部分:https://blog.csdn.net/u010173095/article/details/88026265

 

发现是Content-Length导致的问题后,将Content-Length参数调大,但是发现迟迟未将请求参数发送出去。(TODO:该问题还有待深究)

如果Content-Length不设置,则会提示缺少请求体参数(Missing request body)

解决方式:添加一个请求头Transfer-encoding,值为Chunked的时候(接下来的body我要一块一块的传,每一块开始是这一块的大小,等我传到大小为0的块时,就没了),Content-Length可以不用设置,即使设置了也是没有生效的效果,此时成功接收到相应结果。

结论:Content-Length设置小了会被截取,参数不完整;设置大了,会超时;经测试,Content-Length多一个数少一个数都不行,必须得精确!

 

posted @ 2020-09-25 10:38  惊叫唤  阅读(8131)  评论(0编辑  收藏  举报