Что это значит?
Особенно в случае "Типа контента: application/x-www-form-urlencoded".
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
отсутствуют, то в конце ответа соединение должно быть закрыто.
Это количество байтов данных в теле запроса или ответа. Тело - это часть, которая идет после пустой строки под заголовками.
Отсюда :
Поле заголовка объекта 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.
Моя интерпретация такова, что это означает длину «на проводе», то есть длину * закодированного »контента
Наиболее распространенное использование 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
Поле заголовка объекта 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» закодированные данные отправляются назначенному агенту обработки, чтобы вы могли установить длину или размер данных, которые вы собираетесь публиковать.
Согласно 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.