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来明确表示数据结束。
相关推荐
handsomestWei1 天前
Docker引擎API接入配置
运维·http·docker·容器·api
大數據精準工單獲取1 天前
【数据抓取】 编写爬虫基本请求:使用爬虫框架发送 HTTP 请求,获取网页内容
爬虫·网络协议·http
时空自由民.1 天前
HTTP协议和MQTT协议区别
网络·网络协议·http
AI_Claude_code2 天前
网络基础回顾:DNS、IP封锁与HTTP/S协议关键点
网络·爬虫·python·tcp/ip·http·爬山算法·安全架构
robch2 天前
python3 -m http.server 8001直接启动web服务类似 nginx
前端·nginx·http
以太浮标2 天前
华为eNSP模拟器综合实验之- DHCP、DNS、HTTP和FTP服务器配置案例Client-Server
linux·服务器·windows·http·华为·信息与通信
杨凯凡2 天前
【002】HTTPS 粗解:证书、TLS 握手与对后端配置的影响
网络协议·http·https
AI_Claude_code2 天前
ZLibrary访问困境方案二:DNS-over-HTTPS/TLS配置与隐私保护实践
爬虫·python·网络协议·http·网络安全·https·网络爬虫
张np3 天前
java框架和http调用接口的区别
java·开发语言·http
江畔何人初3 天前
http协议的概念以及http1,http2,http3的区别
网络·网络协议·http