← 中文资源

简体中文版本

解析分块传输编码错误

逐帧解析畸形的分块响应体,定位损坏的分块长度或缺失的终止块,解决客户端解析报错。

阅读英文原文

目标

流式导出在多数环境正常,但某个代理破坏了末尾分块,让客户端报出难以理解的解析错误。本配方把原始分块响应保存下来,手工逐帧解码,校验每个分块长度行是否是合法十六进制,并检查是否有零长度终止块,从而定位损坏发生在源站还是代理。

步骤要点

  1. 用 curl –raw 保存未解码的分块响应体。
  2. 按 CRLF 切分,逐帧校验长度行是否为合法十六进制。
  3. 检查是否存在零长度终止块,缺失会让客户端挂起。
  4. 在源站与代理两侧分别抓取,确认坏帧来源。
curl --raw -sS https://stream.example.com/export -o raw.http
head -c 200 raw.http | xxd | head

排错提示

  • 代理可能重新分块,需在源站侧对比。
  • 缺少终止块会导致客户端一直等待。
  • 手工解码仅用于调试,不能用于生产解析。

适用边界

  • 适用于 HTTP/1.1 分块,不适用于 HTTP/2 帧。
  • 不校验分块内容语义。