Как избежать nginx 400, когда PUT пустое тело - PullRequest
1 голос
/ 31 декабря 2011

Я получил 400 ошибку при попытке отправить запрос PUT с пустым телом.Кажется, nginx подумал, что это неверный запрос.Есть ли способ изменить настройку nginx или настроить сторону клиента, чтобы избежать ошибки 400

Ответы [ 2 ]

0 голосов
/ 02 января 2012

Ваша проблема может быть связана с тем, что вы пытаетесь соотнести семантику CRUD (создание, получение, обновление и удаление) с глаголами REST спецификации HTTP (GET, PUT, POST, DELETE, HEAD) со следующим неполным отображением:

  1. Создать = PUT
  2. Получить = ПОЛУЧИТЬ
  3. Обновление = POST
  4. Удалить = УДАЛИТЬ

Тем не менее, «PUT» указывает, что что-то должно быть «помещено» на сервер, и когда есть пустое тело, оно недопустимо и всегда должно получить ответ 400.

  • Create = PUT (если и только если вы отправляете ресурс необходимо для создания контента).

  • Create = POST (если вы отправляете команду на сервер создать контент, используя ресурсы на стороне сервера)

  • Получить = ПОЛУЧИТЬ.

  • Update = PUT (если и только если вы отправляете ресурс необходимо обновить контент)

  • Update = POST (если вы отправляете команду на сервер обновить содержимое, используя ресурсы на стороне сервера)

  • Удалить = УДАЛИТЬ.

Читать дальше Пост против PUT

0 голосов
/ 31 декабря 2011

Nginx не поддерживает фрагментированные запросы, поэтому в коде клиента должен быть указан правильный заголовок Content-Length. Nginx возвращает 411 в отсутствие.

Я не уверен, почему вы получаете 400. Мой совет - установить error_log уровень как минимум info и посмотреть, на что жалуется Nginx.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...