卷曲 POST - 411 所需长度

卷曲 POST - 411 所需长度

我们有一个用 PHP 构建的 RestFUL API。如果我们发出请求:

curl -u api-key:api-passphrase https://api.domain.com/v1/product -X POST

我们得到结果:

411 - Length Required

虽然如果我们简单地添加-d ""到请求中,它就可以工作并且不会出现 411 错误。有没有办法不需要在 curl 命令中添加 -d?

我们正在使用 lighttpd 网络服务器,并且相信返回 411 错误的是 lighttpd 而不是 php。

答案1

您说得对——lighttpd 不支持带有空消息正文且未将“Content-Length”标头设置为零的 POST 请求,而 CURL 会发送此类请求。关于谁是正确的争论不休,但在我看来,lighttpd 有问题。没有 Content-Length 和 Transfer-Encoding 的 POST 完全合法,并且没有消息正文。

添加后-d ""会导致 CURL 发送一个Content-Length: 0标头,从而解决问题。

您可以修改 lighttp。找到发出 411 错误的代码,然后将内容长度设置为零。

相关内容