Welcome! Log In Create A New Profile

Advanced

Установка Content-Range в зависимости от Range (с подделанным Content-Length)

February 08, 2013 11:56AM
Суть проблемы:
Для воспроизведения браузером google chrome из тега <audio> файл формата ogg будет проигран только после полного получения. Если у посетителя интернет со скоростью 128kbps, то файл в 2 мб будет отдаваться достаточно долго.
Но если файл будет очень большого размера, то google chrome делает проигрывание по мере загрузки файла (видимо это не баг, а специально сделано так).

Задача:
Обмануть google chrome с его хитрым алгоритмом.
Казалось бы, поставив content-length большого размера решит проблему. Но google chrome <audio> перед проигрыванием файла делает запрос на проверку всего файла

Заголовок запроса
Range: bytes=2657723-2723029

Заголовок ответа
Content-Length: 2723030
Content-Range: bytes 0-2723029/2723030

(этот запрос хочет получить почти весь файл за исключением начала файла, после полученных 64 кб запрос отменяется, а браузер далее на слово верит, что файл существует целиком, т.е. посути не важно иметь весь контент)

Такое происходит если файл действительно такого размера, но если "подсунуть" мелкий файл в 1 мб и сказать что он 2723030 bytes, то возникает ошибка
HTTP/1.1 416 Requested Range Not Satisfiable («запрашиваемый диапазон не достижим»)


Вопрос:
Как можно перекрыть эту ошибку, и начать отдавать контент?
Такое вообще возможно?
Subject Author Posted

Установка Content-Range в зависимости от Range (с подделанным Content-Length)

billgx February 08, 2013 11:56AM

Re: Установка Content-Range в зависимости от Range (с подделанным Content-Length)

Михаил Монашёв February 08, 2013 12:16PM

Re: Установка Content-Range в зависимости от Range (с подделанным Content-Length)

Ruslan Ermilov February 08, 2013 02:04PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 170
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready