Каково поле “Content-Length” в HTTP-заголовке?

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

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

Особенно в случае "Типа контента: application/x-www-form-urlencoded".

263
задан Eonil 5 May 2010 в 02:02
поделиться

7 ответов

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. 

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

Расширение в сообщении ниже .

219
ответ дан 23 November 2019 в 02:29
поделиться

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

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

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

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

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

60
ответ дан 23 November 2019 в 02:29
поделиться

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

250
ответ дан 23 November 2019 в 02:29
поделиться

Отсюда :

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

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

Пример:

  Content-Length: 3495 
 

Приложения ДОЛЖНЫ использовать это поле. чтобы указать длину передачи тела сообщения , если это не запрещено правилами в , раздел 4.4 .

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

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

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

28
ответ дан 23 November 2019 в 02:29
поделиться

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

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

 POST /path/script.cgi HTTP / 1.0 
From: (скрыто) 
User-Agent: HTTPTool /1.0
Content-Type: application / x-www-form-urlencoded 
Content-Length: 32 
 
8
ответ дан 23 November 2019 в 02:29
поделиться

Поле заголовка объекта Content-Length указывает размер тела объекта в десятичном числе 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» закодированные данные отправляются назначенному агенту обработки, чтобы вы могли установить длину или размер данных, которые вы собираетесь публиковать.

2
ответ дан 23 November 2019 в 02:29
поделиться

Согласно spec :

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

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

Пример:

 Content-Length: 3495 
 

Приложения ДОЛЖНЫ использовать это поле. для указания длины передачи тела сообщения, если это не запрещено правилами в разделе 4.4.

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

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

4
ответ дан 23 November 2019 в 02:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: