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

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

当我尝试执行 PUT 操作而未指定内容长度时,nginx 返回了 411 状态。有什么方法可以防止这种情况发生吗?

答案1

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

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

尝试安装HttpChunkin模块或更新Nginx 升级至 1.3.9+

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

答案2

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

答案3

这是一个比较老的问题,但是我在网上搜索时偶然发现了这个问题:

NginX 1.3.9 及更高版本对 POST 和 PUT 开箱即用地支持“Transfer-Encoding: chunked”。

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

相关内容