You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HTTP是否区分空请求/响应体与无请求/响应体?规范与实践疑问

HTTP请求/响应的空体与无体的实际差异

二者并非等价,HTTP规范明确区分

所有主流HTTP版本(HTTP/1.1、HTTP/2、HTTP/3)都对空体和无体做了明确区分,核心差异在于是否存在实体部分:

  • 无体:消息完全没有实体内容,不会携带任何与实体相关的头部(比如Content-Type、Content-Length、Transfer-Encoding)。典型场景如GET请求、HEAD响应,或是204(No Content)状态码的响应。
  • 空体:消息存在实体部分,但实体长度为0。这类消息通常会携带Content-Type(明确空体的媒体类型,如text/plain),同时会通过Content-Length: 0或Transfer-Encoding: chunked(空分块)来标识实体长度。比如POST请求发送空表单数据时,就属于空体场景。

规范中的具体界定

以HTTP/1.1(RFC 7230)为例:

  • 请求层面:GET、DELETE等方法默认无体,若客户端强行发送实体,服务器可能忽略;而POST、PUT允许发送空体,但必须通过头部明确标识实体长度。
  • 响应层面:204(No Content)、304(Not Modified)状态码的响应必须是无体的,即使收到Content-Length: 0也应忽略;200(OK)等状态码可以返回空体,此时需携带实体相关头部。

对您理解的修正

您提到“空体带有Content-Type头,无体则没有”这个结论基本正确,但区分二者的核心是实体部分是否存在,而非单一头部:

  • 空体的标识不止依赖Content-Type,也可以通过分块编码实现;
  • 无体的核心是不存在实体,因此不会有任何实体相关头部,这是和空体最本质的区别。

内容的提问来源于stack exchange,提问作者Gili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:30:55