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来明确表示数据结束。
相关推荐
情 九12 小时前
MCP 实战 06:把 HTTP 接口接成工具,让 AI 帮你查数据
人工智能·网络协议·http·mcp
步行cgn1 天前
HTTP 请求报文结构详解:请求行、请求头、请求体各自的作用
网络·网络协议·http
明天也要努力学习2 天前
HTTP 协议的基本格式和 fiddler 的用法
网络协议·http·fiddler
cpolar技术支持2 天前
网关加 gzip,同时开启 chunked,下载回来的包解不开:把两层编码的解压顺序与长度核对做成只读页
python·http·网络编程·socket·内网穿透
骑着蜗牛撵大象3272 天前
手写一个 HTTP 服务器:从 socket 到 epoll,Linux 上到底怎么把请求变成响应
linux·服务器·网络·http·epoll·socket编程·并发模型
沫璃染墨2 天前
从零入门计算机网络系列(十):HTTP协议进阶——从资源路径解析到状态码与请求头详解
linux·运维·服务器·网络·c++·http
|_⊙2 天前
应用层协议HTTP与HTTPS
网络·网络协议·http
路由侠内网穿透.2 天前
本地部署开源 WSGI HTTP 服务器 Gunicorn 并实现外部访问
运维·服务器·网络·网络协议·http·开源
川石课堂软件测试3 天前
学习软件测试需掌握的一些知识
数据库·python·sql·功能测试·网络协议·mysql·http
靠coding维持生计的potato3 天前
从HTTP到存储——文件上传的底层原理梳理
http