Что такое поле "Content-Length" в заголовке HTTP?
Что это значит?
- количество байтов закодированной строки содержимого с кодировкой, указанной в заголовке.
- количество символов в строке Содержание.
особенно в случае "Content-Type: application / x-www-form-urlencoded".
8 ответов
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
заголовки отсутствуют, затем в конце ответа соединение должно быть закрыто.
поле сущности-заголовка 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" закодированные данные отправляются агенту обработки, назначенному для установки длины или размера данных, которые вы собираетесь опубликовать.