[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Смена headers в ответе браузеру
nailer
Хостинг, отдает видео с "Content-Type: application/octet-stream". IE10 windows 8 не может правильно интерпретировать данные. Пользовательские MIME-types запрещены, нет .htaccess (сервер Apache/1.3.37 (Unix)) и, соответственно, всего, что с ним могло бы быть связано. PHP 5.3.6 установлен не модулем Apache, а FastCGI. MIME-types техподдержка менять не будет.
Пытаюсь менять заголовки для IE (любые другие браузеры легко разбирают битовые данные)
<?
$fname=$_GET['fname']; // getfile.php?fname=????.mp4
$fdown='http://*************************/pics/'.$fname;
$ext=substr(strrchr($fname, '.'), 1);
/*
<source type="video/mp4" src="/video.mp4" />
<source type="video/webm" src="/video.webm" />
<source type="video/ogg" src="/video.ogv" />
*/

$ext=($ext=='ogv') ? 'Content-Type: video/ogg' : 'Content-Type: video/'.$ext;
$offset = 60 * 60 * 24 * 3;
$expStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
$f=fopen($fdown, 'rb') or die ( "Не удалось открыть файл" );
if($f){
header("HTTP/1.1 200 OK");
header("Last-Modified Sat, 11 May 2013 18:41:47 GMT");
header("Cache-Control: public");
header($expStr);
header('ETag: "2e000000016c88-619996-4dc75a2d34769"');
header("Connection: close");
header($ext);
while (!feof($f)) {
echo fread($f, 8192);
}
}

fclose($f);
?>

Хтмл на локальном сервере выглядит таким образом:
<!DOCTYPE HTML>
<html lang="en-gb" dir="ltr">
<body>
<video
width="640" height="480" poster="http://127.0.0.1/wp-content/uploads/**********/pics/iq_preview.jpg" controls="controls" preload="none">
<source
src="http://127.0.0.1/gf.php?fname=iqubiki_prev.mp4" type="video/mp4" />
</video>
</body></html>

На хостинге, подобный же кусок хтмл (source src="http://)- фрагмент wordpress публикации
Скрипт, запущенный на локальной машине, работает как надо - на хостинге скрипт лежит в "корне", ответ сервера "Content-Type: text/html", и "Не могу открыть файл". Т.е. скрипт на локальной машине, в удаленном расположении по адресу http://... файл видит и открывает, на хостинге же адрес, указанный таким образом скрипт открыть не может (?).
Буду признателен за любую помощь - собственные идеи иссякли.

P.S. В идеале, было бы полезно заставить скрипт выдавать клиенту код 304, после успешной загрузки этого файла. Но apache_request_headers для чтения заголовков клиента использовать не могу, т.к. FastCGI и PHP 5.3.6 (не 5.4). В Глобальных переменных нужные данные не присутствуют ($_SERVER). Хостер разрешает Perl, CGI-BIN, но дела с ними не имел.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.