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

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

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

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

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-Length представляет собой число, обозначающее точную длину байта тела HTTP. Тело HTTP начинается сразу после первой пустой строки, которая найдена после строки начала и заголовков.

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

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

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

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

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

Отсюда :

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

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

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

  Content-Length: 3495 

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

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

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

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

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

Наиболее распространенным использованием POST, безусловно, является передача данных формы HTML в сценарии CGI. В этом случае заголовок Content-Type: обычно является application / x-www-form-urlencoded, а заголовок Content-Length: дает длину данных формы с кодировкой URL (здесь есть примечание о кодировке URL). Скрипт CGI получает тело сообщения через 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 

Согласно спецификации :

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

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

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

 Content-Length: 3495 

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

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

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

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

Content-Length = “Content-Length” “:” 1 * DIGIT

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

Контент-длина: 1024

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

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

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

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

  • Каков стандарт де-факто для обратного прокси-сервера, чтобы указать бэкэнд-SSL?
  • Какие заголовки HTTP-ответа необходимы
  • Мне нужен Content-Type: application / octet-stream для загрузки файла?
  • Добавить пользовательский заголовок на основе типа файла
  • Как узнать, поддерживает ли сервер заголовок Range?
  • Axios получают доступ к полям заголовка ответа
  • Как получить размер файла из заголовков http
  • Правильно ли это утверждение? Метод HTTP GET всегда не имеет тела сообщения
  • Content-Disposition: Каковы различия между «inline» и «attachment»?
  • Получение IP-адреса клиента: REMOTE_ADDR, HTTP_X_FORWARDED_FOR, что еще может быть полезно?
  • Java - Как найти перенаправленный URL-адрес URL-адреса?
  • Давайте будем гением компьютера.