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

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

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

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

8 ответов


адресу 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. 

не имеет значения, что такое content-type.


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


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

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

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

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

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


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


отсюда:

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

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

пример

   Content-Length: 3495

приложения должны использовать это поле для укажите длину передачи тело сообщения, если это запрещено правилами в 4.4.

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

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

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


С на этой странице

наиболее распространенное использование POST, безусловно, отправить данные HTML-формы в CGI файлы сценариев. В этом случае Content-Type: заголовок обычно приложение/x-www-form-urlencoded, и заголовок Content-Length: дает длина url-кодированной формы данные (вот примечание по URL-кодировке). Сценарий CGI получает сообщение тело через STDIN и декодирует его. Вот типичная форма представления , с помощью Сообщение:

POST /path/script.cgi HTTP/1.0
From: frog@jmarshall.com
User-Agent: HTTPTool/1.0
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

по словам spec:

поле entity-header Content-Length указывает размер тела Сущности в десятичном числе октетов, отправленных получателю, или, в случае метода HEAD, размер тела сущности, которое было бы отправлено, если бы запрос был GET.

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

пример

Content-Length: 3495

приложения должны использовать это поле для указания длины передачи тела сообщения, если только это запрещено правилами в разделе 4.4.

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

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


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

Content-Length = " Content-Length ":" 1*цифра

пример

Content-Length: 1024

приложения должны использовать это поле для указания длина передачи тела сообщения.

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

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

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