Curl POST - 411 Comprimento necessário

19

Nós temos uma API RESTRITA que construímos em PHP. Se fizermos o pedido:

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

Voltamos:

411 - Length Required

Embora se simplesmente adicionarmos -d "" na solicitação, isso funciona e nenhum erro 411. Existe uma maneira de não precisar adicionar -d ao comando curl?

Estamos usando o lighttpd web server e acreditamos que o seu lighttpd NOT php está retornando o erro 411.

    
por Justin 27.09.2011 / 10:05

1 resposta

34

Você está correto - o lighttpd não suporta solicitações POST com um corpo de mensagem vazio sem um cabeçalho 'Content-Length' definido como zero, e o CURL envia tal solicitação. Há discussões sobre quem está certo, mas na minha opinião, o lighttpd está quebrado. Um POST sem Content-Length e sem Codificação de Transferência é perfeitamente legal e não possui corpo de mensagem.

Adicionar -d "" faz com que o CURL envie um cabeçalho Content-Length: 0 , o que resolve o problema.

Você pode modificar o lighttp. Encontre o código que emite o erro 411 e defina o comprimento do conteúdo para zero.

    
por 27.09.2011 / 10:29