有没有办法避免nginx 411 Content-Length所需的错误?


11

尝试执行PUT而未指定content-length时,我从nginx返回411状态。有什么办法可以阻止这种情况的发生?

nginx 

Answers:



5

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


3
这是不正确的。w3.org/Protocols/rfc2616/rfc2616-sec4.html“通过在请求的消息头中包含Content-Length或Transfer-Encoding头字段来指示请求中消息体的存在。” 这是nginx中的错误,已在最新版本中修复。请注意,此错误已在PUT之前的POST中修复。
尼克·帕尔默

2

古老的问题,但由于我在网络搜索中偶然发现:

NginX 1.3.9及更高版本支持POST和PUT开箱即用的“传输编码:分块”。

使用分块传输,您可以发送文件而无需先设置内容长度。


是的,已经解决了,谢谢!
rogerdpack
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.