Я повертаю статус 411 від nginx при спробі зробити PUT, не вказуючи довжину вмісту. Чи є спосіб запобігти цьому?
Я повертаю статус 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 потрібна тривалість вмісту. Це не вимога Nginx, це HTTP. Запит PUT, як і POST-запити, обов'язково має тіло вмісту. Це тіло може бути нульової довжини, але якщо це так, ви мусите це прямо сказати. Очевидно, ви не можете припустити, що вміст продовжується до тих пір, поки з'єднання не буде закрито (що означає відсутність заголовка довжини вмісту), оскільки сервер повинен бути в змозі відповісти на запит перед тим, як з'єднання буде закрите.
Старе питання, але оскільки я натрапив на це з веб-пошуку:
NginX 1.3.9 і вище підтримує "Transfer-Encoding: chunked" з коробки для POST та PUT.
За допомогою неперервної передачі ви можете спочатку надсилати файли без встановлення довжини вмісту.