web-dev-qa-db-ja.com

Curl 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 Webサーバーを使用しており、そのlighttpdが411エラーを返すphpではないと信じています。

33
Justin

あなたは正しいです-lighttpdは、「Content-Length」ヘッダーがゼロに設定されていない空のメッセージ本文を含むPOSTリクエストをサポートしていません。CURLはそのようなリクエストを送信します。引数は前後にあります誰が正しいかについてですが、私の意見では、lighttpdは壊れています。Content-LengthもTransfer-EncodingもないA POSTは完全に合法であり、メッセージ本文はありません。

-d ""を追加すると、CURLはContent-Length: 0ヘッダーを送信し、問題が解決します。

Lighttpを変更できます。 411エラーを発行するコードを見つけ、代わりにコンテンツの長さをゼロに設定します。

50
David Schwartz