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ではないと信じています。
あなたは正しいです-lighttpdは、「Content-Length」ヘッダーがゼロに設定されていない空のメッセージ本文を含むPOSTリクエストをサポートしていません。CURLはそのようなリクエストを送信します。引数は前後にあります誰が正しいかについてですが、私の意見では、lighttpdは壊れています。Content-LengthもTransfer-EncodingもないA POSTは完全に合法であり、メッセージ本文はありません。
-d ""
を追加すると、CURLはContent-Length: 0
ヘッダーを送信し、問題が解決します。
Lighttpを変更できます。 411エラーを発行するコードを見つけ、代わりにコンテンツの長さをゼロに設定します。