Чи є спосіб уникнути помилок nginx 411, необхідних для вмісту?


11

Я повертаю статус 411 від nginx при спробі зробити PUT, не вказуючи довжину вмісту. Чи є спосіб запобігти цьому?

nginx 

Відповіді:


10

Ви можете спробувати додати це до запиту:

curl -i -X ​​PUT -H 'Довжина вмісту: 0' ' http://www.example.com/test '

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

Цей модуль більше не потрібен для Nginx 1.3.9+, тому що з 1.3.9 ядро ​​Nginx вже має вбудовану підтримку для чітких органів запитів.


5

Для запитів PUT потрібна тривалість вмісту. Це не вимога Nginx, це HTTP. Запит PUT, як і POST-запити, обов'язково має тіло вмісту. Це тіло може бути нульової довжини, але якщо це так, ви мусите це прямо сказати. Очевидно, ви не можете припустити, що вміст продовжується до тих пір, поки з'єднання не буде закрито (що означає відсутність заголовка довжини вмісту), оскільки сервер повинен бути в змозі відповісти на запит перед тим, як з'єднання буде закрите.


3
це неправильно. w3.org/Protocols/rfc2616/rfc2616-sec4.html "Про наявність тесту повідомлення у запиті сигналізується включенням поля заголовка довжини вмісту або передачі-кодування в заголовки повідомлень запиту." Це помилка в nginx, яка виправлена ​​в більш нових версіях. Зауважте, що ця помилка була виправлена ​​для POST задовго до PUT.
Нік Палмер

2

Старе питання, але оскільки я натрапив на це з веб-пошуку:

NginX 1.3.9 і вище підтримує "Transfer-Encoding: chunked" з коробки для POST та PUT.

За допомогою неперервної передачі ви можете спочатку надсилати файли без встановлення довжини вмісту.


Так, спасибі!
rogerdpack
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.