43 votes

Curl POST - 411 Longueur requise

Nous avons une API RestFUL que nous avons construite en PHP. Si nous faisons la requête :

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

Nous obtenons en retour :

411 - Longueur requise

Cependant, si nous ajoutons simplement -d "" à la requête, cela fonctionne et il n'y a pas d'erreur 411. Y a-t-il un moyen de ne pas avoir à ajouter -d à la commande curl?

Nous utilisons le serveur web lighttpd, et pensons que c'est lighttpd et non PHP qui renvoie l'erreur 411.

65voto

David Schwartz Points 31009

Vous avez raison - lighttpd ne prend pas en charge les requêtes POST avec un corps de message vide sans en-tête 'Content-Length' défini à zéro, et CURL envoie une telle requête. Il y a des arguments pour et contre concernant qui a raison, mais à mon avis, lighttpd est défectueux. Un POST sans Content-Length et sans Transfer-Encoding est parfaitement légal et n'a pas de corps de message.

Ajouter -d "" fait que CURL envoie un en-tête Content-Length: 0, ce qui résout le problème.

Vous pourriez modifier lighttp. Trouvez le code qui génère l'erreur 411 et définissez plutôt la longueur du contenu à zéro.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X