200 OK
может возвращать пустое тело с Content-Length: 0
. 204 No Content
имеет более конкретную цель c, чем многие думают. Цитата из current spe c:
Ответ 204 позволяет серверу указать, что действие было успешно применено к целевому ресурсу, подразумевая при этом, что агенту пользователя не нужно уходить от своего текущего «представления документа» (если есть). Сервер предполагает, что пользовательский агент предоставит некоторый индикатор успеха своему пользователю в соответствии со своим собственным интерфейсом и применит любые новые или обновленные метаданные в ответе на свое активное представление.
В основном это означает, что если, например, отправлена форма HTML, и сервер отвечает 204
, он может сигнализировать браузеру не refre sh текущей страницы в новое место, или перенаправить куда-нибудь еще. Например, он может облегчить действие «сохранить», не заставляя браузер перенаправлять / переключаться на новый URL-адрес. Также см. 205
для аналогичного действия, но с другим поведением.
Браузеры (насколько мне известно) на самом деле не реализуют это поведение. Но клиент REST / Hypermedia / HATEOAS мог бы .
Текущий SPE c также указывает более распространенное использование, то есть 200 without a response body
, но если вы go полностью вернемся к HTTP / 1.0 spe c, это весь раздел . Обратите внимание, что только упоминает это поведение и ничего не говорит о том, что 204
является просто заменой 200 минус тело:
Сервер выполнил запрос, но новых нет. информация для отправки. Если клиент является пользовательским агентом, он не должен изменять вид документа по сравнению с тем, который вызвал создание запроса. Этот ответ в первую очередь предназначен для того, чтобы разрешить ввод сценариев или других действий, не вызывая изменения в активном представлении документа пользовательского агента. Ответ может включать в себя новую метаинформацию в виде заголовков объектов, которые должны применяться к документу, который в настоящее время находится в активном представлении пользовательского агента. . удалив это, я согласен, что не так много причин использовать 204
. Это стало условностью, которая, как мне кажется, не имеет особой цели.
Примечание: не обращайтесь к RFC2616, если только вы не занимаетесь rnet археологией.
См. # 2