有没有办法避免 nginx 411 Content-Length required 错误?

11 nginx

尝试在不指定内容长度的情况下执行 PUT 时,我从 nginx 获得 411 状态。有什么办法可以阻止这种情况发生吗?

Stu*_*der 10

您可以尝试将其添加到您的查询中:

curl -i -X PUT -H '内容长度:0' ' http://www.example.com/test '

尝试安装HttpChunkinModule或将Nginx更新到 1.3.9+

Nginx 1.3.9+ 不再需要这个模块,因为从 1.3.9 开始,Nginx 核心已经内置了对分块请求体的支持。


tyl*_*erl 5

PUT 请求需要 Content-Length。提出这个要求的不是 Nginx,而是 HTTP。PUT 请求和 POST 请求一样,必然有一个内容体。该主体可以是零长度,但如果是,则必须明确说明。显然,您不能假设内容一直持续到连接关闭(这就是缺少 content-length 标头所暗示的),因为服务器必须能够在连接关闭之前响应请求。

  • 这是不正确的。w3.org/Protocols/rfc2616/rfc2616-sec4.html “请求中消息体的存在是通过在请求的消息头中包含内容长度或传输编码头字段来表示的。” 这是 nginx 中的一个错误,已在更新的版本中修复。请注意,此错误在 PUT 之前很久就已针对 POST 修复。 (3认同)