Что такое поле Content-Length в заголовке HTTP?

Что это значит?

  • Количество байтов кодированной строки содержимого с кодировкой, указанной в заголовке.
  • Количество символов строки содержимого.

Особенно в случае "Content-Type: application/x-www-form-urlencoded".

Ответ 1

rfc2616

The Content-Length entity-header field indicates the size of the entity-body,
in decimal number of OCTETs, sent to the recipient or, in the case of the HEAD
method, the size of the entity-body that would have been sent had the request
been a GET. 

Не имеет значения, каков тип содержимого.

Расширение на опубликовано ниже.

Ответ 2

Это количество байтов данных в теле запроса или ответа. Тело - это часть, которая появляется после пустой строки под заголовками.

Ответ 3

Один октет - 8 бит. Content-length - количество октетов, которое представляет тело сообщения.

Ответ 4

Заголовок Content-Length - это число, обозначающее точную длину байта тела HTTP. Тело HTTP начинается сразу после первой пустой строки, которая найдена после строки начала и заголовков.

Как правило, заголовок Content-Length используется для HTTP 1.1, так что получающая сторона знает, когда текущий ответ * завершен, поэтому можно повторно использовать для другого запроса.

*... или запрос, в случае методов запроса, которые имеют тело, например POST, PUT или PATCH

В качестве альтернативы заголовок Content-Length может быть опущен, и можно использовать заголовок Transfer-Encoding.

Если отсутствуют заголовки Content-Length и Transfer-Encoding, то в конце ответа соединение должно быть закрыто.

Ответ 5

Отсюда:

Поле заголовка объекта Content-Length указывает размер тела объекта, в десятичном числе OCTET, отправленных в получателя или, в случае HEAD, размер сущность-орган, который был бы отправлен если бы запрос был GET.

   Content-Length    = "Content-Length" ":" 1*DIGIT

Примером является

   Content-Length: 3495

Приложения СЛЕДУЕТ использовать это поле для указать длину передачи тело сообщения, если это не запрещено правилами в разделе 4.4.

Любая длина содержимого больше или равное нулю, является допустимым значением. Раздел 4.4 описывает, как определить длина тела сообщения, если Content-Length не указывается.

Обратите внимание, что значение этого поля равно существенно отличается от соответствующее определение в MIME, где используется дополнительное поле внутри "сообщения/внешнего тела", Тип содержимого. В HTTP это ДОЛЖНО отправляется всякий раз, когда длина сообщения может быть определенными до переданы, если это не запрещено по правилам в разделе 4.4.

Моя интерпретация заключается в том, что это означает длину "на проводе", то есть длину * закодированного содержимого

Ответ 6

От эта страница

Наиболее распространенное использование POST, безусловно, заключается в отправке данных формы HTML в CGI скрипты. В этом случае Content-Type: заголовок обычно применение/х-WWW-форм-urlencoded, и заголовок Content-Length: длина URL-кодированной формы данных (здесь примечание о кодировании URL). CGI script получает сообщение тело через STDIN и декодирует его. Здесь типичная подача формы, используя POST:

POST /path/script.cgi HTTP/1.0
From: [email protected]
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

Ответ 7

В соответствии с spec:

Поле Content-Length entity-header указывает размер тела сущности, десятичного числа OCTET, отправленного получателю или, в случае метода HEAD, размер тела объекта, который будет иметь был отправлен, если запрос был GET.

Content-Length    = "Content-Length" ":" 1*DIGIT

Примером является

Content-Length: 3495

Приложения СЛЕДУЕТ использовать это поле, чтобы указать длину передачи тела сообщения, если это не запрещено правилами в разделе 4.4.

Любое содержание-длина, большее или равное нулю, является допустимым значением. Раздел 4.4 описывает, как определить длину тела сообщения, если Content-Length не задано.

Обратите внимание, что значение этого поля существенно отличается от соответствующего определения в MIME, где оно является необязательным полем, используемым в типе контента "message/external-body". В HTTP он ДОЛЖЕН быть отправлен всякий раз, когда длина сообщения может быть определена до передачи, если это не запрещено правилами в разделе 4.4.

Ответ 8

Поле Content-Length entity-header указывает размер тела сущности, десятичного числа OCTET, отправленного получателю или, в случае метода HEAD, размер тела объекта, который будет иметь был отправлен, если запрос был GET.

Content-Length = "Content-Length" ":" 1 * DIGIT

Примером является

Content-Length: 1024

Приложения СЛЕДУЕТ использовать это поле, чтобы указать длину передачи тела сообщения.

В PHP вы бы использовали что-то вроде этого.

header("Content-Length: ".filesize($filename));

В случае "Content-Type: application/x-www-form-urlencoded" закодированные данные отправляются агенту обработки, указанному так, что вы можете установить длину или размер данных, которые собираетесь отправлять.