Longobard
написал 31 марта 2004 года в 00:03 (918 просмотров)
Ведет себя
как мужчина; открыл 291 тему в форуме, оставил 2499 комментариев на сайте.
У меня такая трабла: мой веб-сервер не показывает размер файла когда его скачиваешь. То есть клиент не может узнать этот размер. Я зачитал до дыр RFC2068, но так и не узнал, каким макаром этот самый размер клиенту указать. Как это сделать? Например есть файл test.tar.bz2 и лежит он в корне. Сервер получает запрос GET /test.tar.bz2 HTTP/1.0. Сервер успешно отсылает файл и он скачиается. Однако ни один браузер (Пробовал Оперу, Мазилу, Конкуерор) не определяют его размер при скачивании. Чего делать?
Последние комментарии
- OlegL, 17 декабря в 15:00 → Перекличка 21
- REDkiy, 8 июня 2023 года в 9:09 → Как «замокать» файл для юниттеста в Python? 2
- fhunter, 29 ноября 2022 года в 2:09 → Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt? 6
- Иванн, 9 апреля 2022 года в 8:31 → Ассоциация РАСПО провела первое учредительное собрание 1
- Kiri11.ADV1, 7 марта 2021 года в 12:01 → Логи catalina.out в TomCat 9 в формате JSON 1
ecobeing.ru
Экология и вегетарианство на благо всем живым существам Планеты.
При этом серверу не приходит какого-либо запроса. То есть я поставил логирование всего что приходит в сокет серверу — так там сплошной GET и при закачке файла посылается только один запрос по типу GET /test.tar.bz2 HTTP/1.1
Ну что тебе сказать… Все правильно, по запросу GET /test.tar.bz2 HTTP/1.1 и приходит размер файла от Апача, протокол требует. Просто ты полного ответа сервера не видишь, вот и кажется, что не приходит…
А ты сделай вот что:
->telnet 127.0.0.1 80
Trying 127.0.0.1…
Connected to 127.0.0.1.
Escape character is '^]’.
->GET /test.bb HTTP/1.1
->Host: 127.0.0.1
->
HTTP/1.1 200 OK
Date: Tue, 30 Mar 2004 23:02:14 GMT
Server: Apache/1.3.29 (Unix)
Last-Modified: Tue, 30 Mar 2004 22:06:59 GMT
ETag: «1a39b-b-4069ef83»
Accept-Ranges: bytes
Content-Length: 11
Content-Type: text/plain
yalabubuda
Connection closed by foreign host.
Здесь «->» обозначает строку введенную с терминала и закончившуюся Enter’ом. Обрати внимание на строку «Content-Length: 11» в ответе сервера. Это — размер моего тестового файла test.bb, который содержит лишь строку «yalabubuda»
Все это в RFC 2068…
Good Luck,
UT
Есть ещё запрос HEAD, который, в отличие от GET, отдаёт только заголовки, как раз те, которые являются «server reply». Начинаются они всегда «HTTP/1.x xxx …..»
Все, ясно, всем спасибо. Проглядел я это как-то в RFC2068 :(
Хм. Выяснилсь что у меня RFC было неполным. У меня в нем только 9 глав было, а об этом рассказывается в главе номер 14 :)
А как узнать MIME-тип файла (например text/plain и т.д.). Наверняка ведь есть функция какая-то. Не по расширению мне ведь определять. И как получается ETag?
Как его сгенерить? Что он из себя представляет? Контрольную сумму файла?
Апач этот етаг генерит так: