컬 POST-411 길이 필요 -d “”요청에 추가 하면

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가 아니라고 생각합니다.



답변

맞습니다. lighttpd는 ‘Content-Length’헤더가 0으로 설정되지 않은 빈 메시지 본문이있는 POST 요청을 지원하지 않으며 CURL은 그러한 요청을 보냅니다. 누가 옳은지에 대한 논쟁이 있지만 내 의견으로는 lighttpd가 깨졌습니다. Content-Length 및 Transfer-Encoding이없는 POST는 완벽하게 합법적이며 메시지 본문이 없습니다.

-d ""CURL을 추가 하면 Content-Length: 0헤더 가 전송 되어 문제가 해결됩니다.

lighttp를 수정할 수 있습니다. 411 오류를 발생시키는 코드를 찾아 내용 길이를 0으로 설정하십시오.


답변