Назад | Перейти на главную страницу

Curl POST - Требуется длина 411

У нас есть 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, и вместо этого установите нулевую длину содержимого.