Http 上传压缩包需要加0\r\n\r\n

在HTTP上传中,特别是在使用Transfer-Encoding: chunked(分块传输编码)时,0\r\n\r\n 具有特定的含义,它标志着数据流的结束。这与你上传的是"压缩包"还是其他类型的文件没有直接关系,而是由HTTP协议本身决定的。

一、0\r\n\r\n 的含义

在HTTP的分块传输编码(Chunked Transfer Encoding)中,消息体被分割成一系列的数据块(chunks)进行发送。每个块都有一个大小说明和实际数据。

  • 数据块格式<十六进制数表示的块大小>\r\n<数据内容>\r\n

  • 结束标志 :当所有数据块发送完毕后,服务器需要发送一个特殊的块来表示传输结束,这个块就是:

    复制代码
    0\r\n
    \r\n
    • 0 表示接下来的块大小为0,即没有更多数据。
    • \r\n 是CRLF(回车换行),用于分隔。
    • 最后的 \r\n 标志着整个chunked消息体的彻底结束。

二、需要注意的是,并非所有HTTP上传都必须包含0\r\n\r\n

  • Content-Length 方式 :如果使用Content-Length头指明了请求体的总字节数,那么就不需要分块传输,也就不需要0\r\n\r\n。服务器会根据Content-Length读取指定数量的字节后,就认为请求体结束。
  • Transfer-Encoding: chunked 方式 :只有在这种模式下,才需要用0\r\n\r\n来明确表示数据结束。
相关推荐
ControlRookie10 小时前
第04篇_把 HTTP 放进 PLC:扫描周期、缓冲区、状态机和能力边界
http·codesys·plc通信
記億揺晃着的那天11 小时前
HTTPS 页面内网直连 NAS:解决 Mixed Content 与公网带宽瓶颈
网络协议·http·https·nas
GitLqr1 天前
别再盲目复制了:彻底搞懂 CORS 的本质与那些“神坑”
安全·http·面试
IPdodo_1 天前
Codex 一直显示 Thinking 怎么办?区分任务运行、界面卡住与会话恢复
http·网络调试
Kina_C1 天前
Apache HTTP Server 安装、配置与高级功能详解
linux·http·apache
chexus2 天前
21. 深入 Nginx HTTP 缓存源码:CDN功能
nginx·http·缓存
张小姐的猫2 天前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
2501_916007472 天前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
2501_916008892 天前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
猫头_3 天前
AI 流式传输工程指南:有了 EventSource 为何还要 Fetch?
javascript·http·llm