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

HTTP2中无请求体的POST/PUT是否需Content-Length头?

关于HTTP/2无请求体POST请求的411错误问题解答

协议规则与困惑解析

根据RFC7540第8.1.2.6节的定义,仅当请求带有请求体时,才允许(而非强制)携带Content-Length头,对于无请求体的请求,HTTP/2标准并未要求必须发送该头。

HTTP/2通过帧机制标识请求体状态:客户端发送HEADERS帧后设置END_STREAM标记,就明确告知服务器「此请求无请求体」,完全符合协议规范,无需额外的Content-Length头。

客户端与服务器行为的正确性判断

  • 客户端不发送Content-Length头的行为符合HTTP/2标准,属于合规操作。
  • Azure API Management返回411错误,是服务器端的自定义兼容策略或配置限制——部分从HTTP/1.x架构迁移而来的网关,可能保留了「POST请求必须携带Content-Length」的检查逻辑,这并非HTTP/2协议的强制要求。

可行的解决办法

针对Azure APIM的这个限制,可尝试两种调整方式:

  1. 手动添加Content-Length: 0头,明确告知服务器无请求体:
    curl --location --request POST "..." --header "Content-Length: 0" --verbose --http2
    
  2. 移除无意义的Content-Type: application/json头(无请求体时该头不存在实际作用):
    curl --location --request POST "..." --verbose --http2
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:15:35