首页/网络/协议速查/204 No Content 无内容
HTTP 方法与状态码91 条

204 No Content 无内容

请求成功但响应没有内容:常用于 PUT/DELETE 成功、以及不需要返回数据的操作。

协议速查网络更新于 2026-10-13

204 是什么

204 No Content 表示请求成功但响应没有内容:常用于修改或删除成功之后,服务端不需要回传任何数据。它属于成功类别,但有一个必须遵守的约束——不得携带响应体,也不应出现描述报文长度的头部。它的价值在于让「成功且无输出」这件事有个明确的表达,客户端据此知道不必解析内容,也不会因为拿到空内容而报错。

基本信息

名称204 No Content,定义见成功响应相关章节
作用成功且无响应体
头部约束不得包含描述报文长度与传输方式的头部
典型场景修改、删除成功;不需要回传数据的操作
客户端处理不要尝试解析响应体

典型使用场景

  • 删除成功:服务端不需要回传被删对象
  • 修改成功:客户端已有最新数据,不必回传
  • 状态切换:启用、禁用、标记已读这类动作
  • 幂等操作重复执行:第二次同样返回无内容表示结果一致
  • 心跳与预检:只需要一个明确的成功信号

删除成功返回无内容

删除成功返回无内容
curl -si -X DELETE https://api.example.com/users/101   # 预期只看到状态行与少量头部
curl -si -X PATCH https://api.example.com/users/101 -H 'Content-Type: application/merge-patch+json' -d '{}'   # 修改成功同样可用无内容码
# 脚本里判断成功时按状态码分支,不要对无内容的响应调用解析

使用时的三条约束

约束原因
不得带响应体带内容属于协议违规,部分客户端会把多余内容当作下一个响应的开头
不应带报文长度头没有内容就没有长度可声明
客户端不要解析内容对空响应解析会直接抛异常

排查要点

  • 前端调用后报解析错误,先确认该接口是否返回了无内容码
  • 框架自动补上长度头或空响应体时,属于兼容性问题,需要显式关闭
  • 网关或代理改写响应时可能破坏约束,排查要用命令行确认原始响应
修改或删除成功时,如果客户端确实需要知道最新状态,应当改用能返回内容的状态码,而不是在无内容码上硬塞数据。语义清晰比省一次请求更重要。
在无内容响应后面附加响应体属于协议违规:某些客户端会把多出来的内容当作下一个响应的开头,在连接复用的场景下可能造成响应错位,属于需要严肃对待的兼容性问题。

易错点

  • 在无内容响应后附加响应体,连接复用时造成响应错位
  • 前端对无内容响应调用解析方法,直接抛出异常
  • 框架自动补上报文长度头或空响应体,破坏了状态码约束
  • 该返回内容时使用无内容码,客户端拿不到结果只能再发一次请求

数据来源与参考

  • RFC 9110 §15.3.5 204 No Content

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌