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

Ruslan Ermilov ru at nginx.com
Fri Feb 8 19:02:05 UTC 2013


On Fri, Feb 08, 2013 at 11:56:59AM -0500, billgx wrote:
> Суть проблемы:
> Для воспроизведения браузером 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 («запрашиваемый диапазон не
> достижим»)
> 
> 
> Вопрос:
> Как можно перекрыть эту ошибку, и начать отдавать контент?
> Такое вообще возможно?

"max_ranges 0;" и подсовывание "нужного" Content-Length не решит
проблему?

http://nginx.org/r/max_ranges/ru



Подробная информация о списке рассылки nginx-ru