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

Есть ли способ избежать ошибок nginx 411 Content-Length required?

Я получаю статус 411 от nginx при попытке выполнить PUT без указания длины содержимого. Есть ли способ отключить это?

Вы можете попробовать добавить это в свой запрос:

curl -i -X ​​PUT -H 'Длина содержимого: 0' 'http://www.example.com/test'

Попробуйте установить HttpChunkinModule или обновить Nginx до версии 1.3.9+

Этот модуль больше не нужен для Nginx 1.3.9+, потому что, начиная с 1.3.9, ядро ​​Nginx уже имеет встроенную поддержку фрагментированных тел запросов.

Запросы PUT требуют Content-Length. Это не Nginx, а HTTP. Запрос PUT, как и запросы POST, обязательно имеет тело содержимого. Это тело может быть нулевой длины, но если это так, вы должны явно указать это. Очевидно, вы не можете предположить, что содержимое продолжается до тех пор, пока соединение не будет закрыто (что подразумевает отсутствие заголовка длины содержимого), потому что сервер должен быть в состоянии ответить на запрос до закрытия соединения.

Старый вопрос, но поскольку я наткнулся на него из веб-поиска:

NginX 1.3.9 и выше поддерживает «Transfer-Encoding: chunked» из коробки для POST и PUT.

При фрагментированной передаче вы можете отправлять файлы без предварительной настройки длины содержимого.