請求頭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多一個數少一個數都不行,必須得精確!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM