У нас есть RestFUL API, который мы создали на PHP. Если мы сделаем запрос:
curl -u api-key:api-passphrase https://api.domain.com/v1/product -X POST
Возвращаемся:
411 - Length Required
Хотя если мы просто добавим -d ""
по запросу он работает и нет ошибки 411. Есть ли способ не требовать добавления -d в команду curl?
Мы используем веб-сервер lighttpd и считаем, что его lighttpd НЕ php возвращает ошибку 411.
Вы правы - lighttpd не поддерживает запросы POST с пустым телом сообщения без заголовка Content-Length, установленного на ноль, и CURL отправляет такой запрос. Есть споры о том, кто прав, но, на мой взгляд, lighttpd не работает. POST без Content-Length и без Transfer-Encoding совершенно законен и не имеет тела сообщения.
Добавление -d ""
заставляет CURL отправлять Content-Length: 0
заголовок, который решает проблему.
Вы можете изменить lighttp. Найдите код, который вызывает ошибку 411, и вместо этого установите нулевую длину содержимого.