关于Content-Length

前言

公司需要使用Java Agent,对返回HTML请求的响应体进行修改.达到无侵入的插入前端JS探针.
但是再修改完请求体之后,页面出现了卡死/白屏/文件下载错误的情况.

分析之后是由于修改响应体之后没有正确的设置Content-Length导致.

Content-Length是什么

在一次HTTP请求中,使用十进制表示的八位字节的数目,这个数目是包含了所有的编码内容.如果响应体使用了gzip进行压缩.那么Length的长度是指压缩后的长度的

错误的Content-Length将会导致什么情况

  • 无响应直到超时
  • 响应体被截断

不确定的Content-Length怎么处理

使用Transfer-Encoding: chunked在请求头进行表明

此时所有的分块数据需要在每个块的开头进行标识当前分块的大小(十六进制),大小后会有\r\n进行标识并在结束的位置也有\r\n
终止块的长度为0并只含有一个\r\n

参考连接

Author: Sean
Link: https://blog.whileaway.io/posts/ba351b6b/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.