Content length что это
Перейти к содержимому

Content length что это

  • автор:

Content-Length

Заголовок Content-Length указывает размер отправленного получателю тела объекта в байтах.

Тип заголовка Заголовок сущности
Можно не передавать да

Синтаксис

Content-Length:

Директивы

Спецификация

Specification
HTTP Semantics
# field.content-length

Браузерная совместимость

BCD tables only load in the browser

Смотрите также

Found a content problem with this page?

  • Edit the page on GitHub.
  • Report the content issue.
  • View the source on GitHub.

This page was last modified on 3 авг. 2023 г. by MDN contributors.

Your blueprint for a better internet.

MDN

Support

  • Product help
  • Report an issue

Our communities

Developers

  • Web Technologies
  • Learn Web Development
  • MDN Plus
  • Hacks Blog
  • Website Privacy Notice
  • Cookies
  • Legal
  • Community Participation Guidelines

Visit Mozilla Corporation’s not-for-profit parent, the Mozilla Foundation.
Portions of this content are ©1998– 2023 by individual mozilla.org contributors. Content available under a Creative Commons license.

Content-Length

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

Header type Н14153Н, П25387П, К36246К
Запрещенное имя заголовка yes
Заголовок ответа CORS-safelisted yes

Syntax

Content-Length:

Directives

Длина в десятичном числе октетов.

Specifications

Specification
HTTP Семантика # field.content-length

Правильная выдача заголовка Content-Length

Однажды, скачивая один из своих сайтов с помощью WGet, с удивлением обнаружил, что после каждой страницы программа останавливается и ждет несколько секунд. Да пользователи иногда тоже жаловались на то, что загрузка сайта очень долго не заканчивается. Стал разбираться, в чем дело, и вот что удалось выяснить.

 ob_start('ob_gzhandler'); 
ob_implicit_flush(0); // отключаем неявную отправку буфера
/* Здесь идет код скрипта, в нем не должно быть ob_flush, так как потом нельзя будет выдавать заголовки */
if (!header_sent()) header('Content-Length: '.ob_get_length()); // если заголовки еще можно отправить, выдаем загловок Content-Length, иначе придется завершать передачу по закрытию

ob_end_flush();
exit(0);
2 комментария:

Нет

Спасибо за полезную информацию, но еще хотелось бы увидеть способ с chunked transfer

Вообще, обычно chunked transfer применяется тогда, когда длина выдаваемой страницы целиком заранее не известна. В этом случае Content-Length лучше не выдавать вообще. А длина каждого отдельного chunk передается перед началом его самого, там все то же самое, только нет слов Content-Lenght и саму длину chunk нужно выдавать не через header, а обычным echo и переводить в hex.
То есть получаем примерно такое:
ob_start();
header(‘Transfer-Encoding: chunked’);
while (!$finish) // что-то делаем с выдачей с помощью echo
echo sprintf(«%X\r\n»,ob_get_length()); // выдаем длину текущего chunk в hex
ob_flush(); // выдаем сам chunk
>
echo «0\r\n»; // пустой chunk означает завершение передачи

  • © 2018—2023, 4X_Pro
  • Правила
  • Обо мне
  • Все проекты
  • Достижения

Дизайн Replica от Hiitea, сайт работает на Intellect Board Pro 3.05 RC1.
Материалы сайта могут использоваться свободно на условиях лицензии CC BY-NC
Задать вопрос

Здесь можно задать мне вопрос или спросить совета по любой теме, затронутой в блогах или на форуме. После того, как я отвечу, вопрос и ответ появятся в соответствующем разделе. Но не забываем, что я — сторонник slow life, поэтому каких-либо сроков ответов не обещаю. Самые интересные вопросы станут основой для новых тем на форуме или записей в блоге.
Сразу предупреждаю: глупости, провокации, троллинг и тому подобное летит прямо в /dev/null.

  • Цитировать
  • Копировать
  • Поделиться
  • Отправить ВК

Как рассчитывается значение заголовка Content-Length?

Я никогда об этом не задумывался, но сегодня вдруг задался вопросом, а что именно обозначает Content-Length? Исключительно размер тела запроса или оно показывает размер всего запроса, т. е. служебные заголовки + тело?

P. S. В документации написано, что это размер тела запроса, но не сказано, относятся ли служебные заголовки к телу!

  • Вопрос задан более двух лет назад
  • 1542 просмотра

2 комментария

Простой 2 комментария

space2pacman

Ярослав Иванов @space2pacman

Заголовки относятся к заголовкам. Длинна контента это только тело.

Lynn

Content-Length бывает 0, при этом очевидно что если бы в него входили заголовки, то такого бы быть не могло.

Решения вопроса 1

samodum

Какой вопрос — такой и ответ

Content-length показывает размер Body.
Т.е. он вполне может быть нулевого размера даже при наличии кучи заголовков и статуса.
Для таких простых вопросов всегда есть гугл и докментация
https://developer.mozilla.org/en-US/docs/Web/HTTP/.

Ответ зашит в самом названии — «Content length»

В документации написано, что это размер тела запроса, но не сказано, относятся ли служебные заголовки к телу!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *