fog
Рыцарь Джедай
Ошибка при загрзке файла через HTTPS после старта сессии
Перенёс скрипт на HTTPS, и появилась следующая проблема:
Если в начале скрипта загрузки файла стартует сессия - при попытке открытия скрипта IE говорит "не удаётся открыть узел интернета", Opera загружает файл, но при этом игнорирует имя файла в заголовке, называя его именем скрипта. При этом ИЕ качает файл, и выдаёт ошибку после того как файл загружен.
Вообще, сам скрипт загрузки файла работает, но если в начале поставить строку session_start() - перестаёт работать.
Привожу сам скрипт, и заголовки при обоих случаях ("сессия не стартуется" и "сессия стартуется"), может из этого можно что-то понять...
Подскажите, что я делаю не так? :]
PS в первом случае, хоть сессия и не стартуется, скрипту передаётся кука PHPSESSID, так как она в браузере уже есть, на работу скрипта это не влияет, т.е. файл в этом случае загружается нормально.
Сам скриптик очень простой:
Такие заголовки если сессия не стартовалась
Такие заголовки после старта сессии
Перенёс скрипт на HTTPS, и появилась следующая проблема:
Если в начале скрипта загрузки файла стартует сессия - при попытке открытия скрипта IE говорит "не удаётся открыть узел интернета", Opera загружает файл, но при этом игнорирует имя файла в заголовке, называя его именем скрипта. При этом ИЕ качает файл, и выдаёт ошибку после того как файл загружен.
Вообще, сам скрипт загрузки файла работает, но если в начале поставить строку session_start() - перестаёт работать.
Привожу сам скрипт, и заголовки при обоих случаях ("сессия не стартуется" и "сессия стартуется"), может из этого можно что-то понять...
Подскажите, что я делаю не так? :]
PS в первом случае, хоть сессия и не стартуется, скрипту передаётся кука PHPSESSID, так как она в браузере уже есть, на работу скрипта это не влияет, т.е. файл в этом случае загружается нормально.
Сам скриптик очень простой:
PHP:
//session_start();
$file = 'file.zip';
if (!@$h = @fopen($file, 'r')) die('не могу прочитать файл');
$size = filesize($file);
header("Content-Disposition: attachment; filename=file.zip");
header("Content-Length: ".$size);
header("Content-type: application/octet-stream");
fpassthru($h);
отправляем
GET /1/download.php HTTP/1.0
Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language ru
Connection Keep-Alive
Cookie js_menu0=1; js_menu15=1; js_menu1=1; PHPSESSID=2vtomnmbal0evqdv024s99nem1; js_menu24=1
Host --my-domain--
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1)
принимаем
HTTP/1.1 200 OK
Connection close
Content-Disposition attachment; filename=silmarillion.zip
Content-Length 237581
Content-Type application/octet-stream
Date Mon, 26 Sep 2005 09:42:52 GMT
Server Apache/2.0.54 (Fedora)
X-Powered-By PHP/5.0.4
Такие заголовки после старта сессии
отправляем
GET /1/download.php HTTP/1.0
Accept image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Accept-Language ru
Connection Keep-Alive
Cookie js_menu0=1; js_menu15=1; js_menu1=1; PHPSESSID=2vtomnmbal0evqdv024s99nem1; js_menu24=1
Host --my-domain--
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1)
принимаем
HTTP/1.1 200 OK
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection close
Content-Disposition attachment; filename=silmarillion.zip
Content-Length 237581
Content-Type application/octet-stream
Date Mon, 26 Sep 2005 09:43:35 GMT
Expires Thu, 19 Nov 1981 08:52:00 GMT
Pragma no-cache
Server Apache/2.0.54 (Fedora)
Set-Cookie PHPSESSID=2vtomnmbal0evqdv024s99nem1; path=/
X-Powered-By PHP/5.0.4