首页/网络/协议速查/411 Length Required 需要内容长度
HTTP 方法与状态码91 条

411 Length Required 需要内容长度

服务器拒绝没有 Content-Length 的含体请求(如拒绝 chunked 上传或长度未知的实体)。

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

411 是什么

411 Length Required 表示服务器拒绝处理「没有声明请求体长度」的请求(RFC 9110 §15.5.12):通常是 POST 或 PUT 带有实体却没有 Content-Length,而服务器又不支持分块传输(chunked)。老旧 CGI、内置网关和部分硬件设备管理界面是最常见的来源;现代服务器大多支持 chunked,因此 411 已相对少见。

基本信息

名称411 Length Required
类别4xx
规范RFC 9110 §15.5.12
触发条件有实体的请求缺少 Content-Length 且服务端不支持分块
现状现代服务器多支持 chunked,411 较少见
互斥关系Content-Length 与 Transfer-Encoding 不能同时出现

典型使用场景

  • 对接老网关或设备 API:上传接口报 411 时补上长度或改用分块
  • 自研 HTTP 客户端:流式上传忘了设置长度会直接被拒
  • 反向代理排查:上游要求长度、下游使用分块,代理需要做转换
  • 协议实现者:理清 Content-Length 与 Transfer-Encoding 的互斥与优先级
  • 自动化测试:用畸形请求验证服务端对长度缺失的处理
  • 安全排查:请求走私防护依赖对这两个头的严格校验

补齐长度或改用分块

补齐长度或改用分块
# 显式声明长度(客户端库通常自动计算,手工设置必须保证准确)
curl -si -X POST https://legacy.example.com/upload \
  -H 'Content-Length: 1048576' --data-binary @file.bin

# 或改用分块传输(需要服务端支持)
curl -si -X POST https://api.example.com/upload \
  -H 'Transfer-Encoding: chunked' --data-binary @file.bin

长度与编码相关

项含义要点
Content-Length声明实体字节数必须与实际一致,否则截断或挂起
Transfer-Encoding: chunked不预声明长度、分块发送不能与 Content-Length 同时出现
413实体超过服务端上限减小体积或调整服务端限制
501方法本身不被支持换方法或升级服务端
Content-Length 与 Transfer-Encoding: chunked 同时出现属于协议错误,部分服务器会直接拒收,防护请求走私的中间件通常也会拦截。
HTTP/2 与 HTTP/3 没有分块传输概念,长度由帧与 END_STREAM 表达,411 基本只出现在 HTTP/1.x 链路上。
服务端对长度缺失的拒绝应当是明确的 411,而不是把请求体当空处理,后者会造成很难排查的数据丢失。
流式上传若不声明长度,需先确认服务端确实支持 chunked;否则应在客户端把内容缓冲到临时文件后再发送。

易错点

  • 流式上传不声明长度又遇到不支持 chunked 的服务端,会被稳定拒绝:先探测服务端能力再选传输方式
  • 手工填 Content-Length 与实际字节数不符会造成请求截断或连接挂死:交给客户端库计算
  • 中间代理剥离 Transfer-Encoding 会造成 411 或请求走私:升级代理并统一长度与分块策略
  • 服务端把缺长度的请求体当空处理,会静默丢数据,比直接返回 411 更难排查
  • WAF 与后端对长度头的处理不一致时,同一请求会被不同组件按不同含义解读

数据来源与参考

  • RFC 9110 §15.5.12 411 Length Required

相关工具

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