Какой метод нуждается в поле длины контента?

Методу POST или PUT требуется длина содержимого в поле заголовка запроса.

Другой метод (GET, PATCH, DELETE, OPTIONS, CONNECT, TRACE, HEADER) также требует длины содержимого?

Что касается длины содержимого в Response, спецификация описана в rfc2616.

Поле заголовка объекта Content-Length указывает размер тела объекта в десятичном числе OCTET, отправленного получателю, или, в случае метода HEAD, размер тела объекта, который был бы отправлен запрос был ПОЛУЧЕН.

Хотя я не смог найти спецификацию заголовка запроса.

1 ответ

Спецификация HTTP была обновлена ​​с RFC2616. Вместо этого обратитесь к следующему:

  • RFC7230 - HTTP / 1.1: синтаксис и маршрутизация сообщений
  • RFC7231 - HTTP/1.1: семантика и контент
  • RFC7232 - HTTP/1.1: условные запросы
  • RFC7233 - HTTP/1.1: Запросы диапазона
  • RFC7234 - HTTP/1.1: кеширование
  • RFC7235 - HTTP/1.1: аутентификация

В частности, раздел 3.3.2 RFC7230

Длина содержимого ДОЛЖНА быть отправлена, когда запрос включает тело полезной нагрузки, а заголовок Transfer-Encoding не установлен.

Так что даже POST или PUT нужно отправлять Content-Length только в том случае, если есть тело, имеющее длину, обычно это происходит в случае POST и PUT из-за операций.

Нет проблем с отправкой Content-Length 0, чтобы указать отсутствие тела, но это подразумевается отсутствием Content-Length или Transfer-Encoding.

Это только спецификации, поэтому ваш пробег может варьироваться в зависимости от реализации http.

Другие вопросы по тегам