Если я проверяю заголовок «content-length», он на 100% точен? - PullRequest
3 голосов
/ 07 января 2012

Если нет, то насколько он точен?

Я хочу узнать размер изображения, прежде чем загрузить его.

Ответы [ 5 ]

6 голосов
/ 07 января 2012

Может ли заголовок длины содержимого HTTP искажен? Да.
Должны ли вы верить, что это точное представление о размере тела сообщения? Да.

3 голосов
/ 07 января 2012

Должно быть, и, как правило, верно. Однако веб-сервер вполне может сообщить о неверной длине контента, хотя это, очевидно, происходит не часто (я вспоминаю старые версии Apache, перенастраивающие бессмысленные длины контента для файлов> 2 ГБ).

Также необязательно указывать заголовок Content-Length

0 голосов
/ 07 января 2012

Браузеры могут простить, если длина содержимого неверна.

У меня возникла проблема здесь , когда сервер иногда возвращал слишком низкую длину содержимого.Браузеры просто не справятся с этим.

Так что да, вы можете предположить, что сервер правильно устанавливает длину контента, основываясь на знании того, что клиенты браузера работают с тем же предположением.

0 голосов
/ 07 января 2012

Content-Length может быть отправлен кодом сервера (или) самим слоем apache.Когда код не отправляется, Apache отправит его.

Известны сбои клиента, когда клиент подключается и закрывает сокет, когда длина содержимого меньше.

Поскольку изображенияобычно не генерируется кодом во время выполнения, вы можете положиться на него.

0 голосов
/ 07 января 2012

Лучше бы было - иначе зачем вообще?

Если он не может быть надежно определен в расширенной версии, он вообще не должен обслуживаться сервером. (Например, при работе с динамически генерируемым текстом может использоваться что-то вроде chunked Transfer Encoding - что не требует, чтобы конечная длина была известна, когда заголовок HTTP записывается в начале потока. )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...