当前位置: 首页 > web >正文

multipart/* 响应是否必须使用 chunked 编码?

不是必须的。

  • 如果服务器在发送响应之前,能够预先知道整个 multipart/* 消息体的总长度(比如,所有部分都已生成并缓存在内存中),那么它可以不使用 Transfer-Encoding: chunked
  • 在这种情况下,服务器会在响应头中设置:
    • Content-Type: multipart/form-data; boundary=your_unique_boundary_string
    • Content-Length: <total_length_of_the_entire_multipart_body_in_bytes>
  • 然后,服务器一次性将整个 multipart 消息体(作为一个连续的字节流)发送出去。

总结一下:

  • multipart/* 是一种内容类型,描述的是HTTP消息体内部的数据是如何组织的(分成多个部分,用boundary分隔)。
  • Transfer-Encoding: chunked 是一种传输机制,描述的是HTTP消息体整体是如何在网络上被分段传输的(当总长度未知时)。

它们是正交(orthogonal)的概念:

  • 你可以用 chunked 方式传输一个 multipart 内容。
  • 你也可以用 chunked 方式传输一个 text/htmlapplication/json 内容。
  • 你也可以在知道总长度的情况下,不用 chunked 方式(而是用 Content-Length)来传输一个 multipart 内容。

因此,multipart 的“底层”不“是” chunked,但 multipart 的内容可以被 chunked 机制所承载和传输。在流式发送 multipart 内容时,chunked 编码是非常有用的。

http://www.xdnf.cn/news/7727.html

相关文章:

  • 常用UI自动化测试框架
  • 【Python训练营打卡】day31 @浙大疏锦行
  • 本征半导体与杂质半导体
  • Ubuntu操作系统里面安装Docker Compose
  • Python实战:打造一个功能完整的单位转换器(长度/温度/货币)
  • C++开发基础之理解std::condition_variable中的wait与wait_for的区别与使用场景
  • 基于springboot的个人博客系统【附源码】
  • 《苍穹外卖》SpringBoot后端开发项目核心知识点与技术栈整理(DAY10 to DAY12)
  • 【深度学习:理论篇】--一文理解Transformer
  • 若依项目集成sentinel、seata和shardingSphere
  • Day.js 基础用法全方位详解
  • 鸿蒙NEXT开发动画案例12
  • AI作曲革新:ACE-Step如何推动音乐创作走向大众
  • UE(虚幻)学习(六)插件打包在UE5.3.2下Value cannot be null的错误
  • Ubuntu 安装 Node.js 指定版本指南
  • 01-通过纯js理解数据驱动图表概念
  • window 显示驱动开发-GDI 硬件加速
  • 活到老学到老-Spring参数校验注解Validated /Valid
  • 实战:基于Pangolin Scrape API,如何高效稳定采集亚马逊BSR数据并破解反爬虫?
  • Nuxt.js一个基于 Vue.js 的通用应用框架
  • 使用引用的原因 和 运算符重载的必要性
  • Ubuntu20.04安装ROS Neotic
  • AI应用交付厂商F5打造六大解决方案,助用户应对复杂挑战
  • NX750HSA20美光固态闪存HSA36NC027
  • LLM驱动的未来软件工程范式与架构策略
  • 鸿蒙开发——7.ArkUI进阶:@BuilderParam装饰器的核心用法与实战解析
  • 算法题(151):保卫花园
  • Vue video播放视频流
  • Vue 3 响应式 Ref 全解析:从基础到高阶应用
  • 监控易一体化运维:采集集群管理,构建稳健运维基石