Nous avons une API RestFUL que nous construisons en PHP. Si nous faisons la demande:
curl -u api-key:api-passphrase https://api.domain.com/v1/product -X POST
Nous revenons:
411 - Length Required
Mais si nous ajoutons simplement -d ""
sur la demande cela fonctionne et aucune erreur 411. Existe-t-il un moyen de ne pas exiger l'ajout de -d à la commande curl?
Nous utilisons le serveur Web lighttpd, et nous croyons que son lighttpd PAS php qui renvoie l'erreur 411.
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 sur zéro, et CURL envoie une telle requête. Il y a des arguments dans les deux sens. sur qui a raison, mais à mon avis, lighttpd est cassé. A POST sans Content-Length et sans Transfer-Encoding est parfaitement légal et n'a pas de corps de message.
Ajouter -d ""
oblige CURL à envoyer un Content-Length: 0
en-tête, qui résout le problème.
Vous pouvez modifier lighttp. Recherchez le code qui génère l'erreur 411 et définissez à la place la longueur du contenu sur zéro.