zoukankan      html  css  js  c++  java
  • 请求头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多一个数少一个数都不行,必须得精确!

  • 相关阅读:
    redis基础
    Django Meta
    Django Query
    Django FileFieldManage
    Django Managers管理器
    Django 模型
    Pytables h5py
    python 高级部分
    Python和HDF 5大数据应用
    是时候放弃pipeline 模型 ?
  • 原文地址:https://www.cnblogs.com/qukun/p/13728662.html
Copyright © 2011-2022 走看看