Какой метод нуждается в поле длины контента?
Методу 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.