session_start + IE + атачмент

nerezus

Вселенский отказник
session_start + IE + атачмент

Если мне надо отдать аттачментом файл пользователю, то session_start отправляет куки, после который IE тупит(пробовал 7 и 8 версии), и файл не отдает.

Как отдать пользователям этого браузера файлы через PHP?)

Минимальный код:
PHP:
<?php
session_start();
$data = 'bebebe';
header('Content-Disposition: attachment; filename=data.txt');
header('Content-Length: ' . strlen($data));
header('Content-Type: application/x-unknown');
echo $data;
header('Cache-Control: public');
не помогает
 

nerezus

Вселенский отказник
Так, по http с header('Cache-Control: public'); скачивает нормально, а вот по https мы имеем ошибку "Не удается открыть этот узел Интернета. Узел недоступен или не найден. Повторите попытку позднее."

https кстати не кешируется в эксплойтере.

-~{}~ 08.11.09 15:43:

session_cache_limiter('private');
решает проблему но не подходит, т.к. сбрасывает сессию, что недопустимо.
 

nerezus

Вселенский отказник
> как это - сбрасывает?
$_SESSION становится array(0) {}

Причем ТОЛЬКО в IE.

-~{}~ 09.11.09 23:28:

И причем только по https.
Простестировал на http - не сбрасывает.

Причем жопой чую, что если в реестре поправлю ключ "кешировать https" - то заработает.
 

vovanium

Новичок
Поставь HttpWatch и посмотри что происходит в IE. Content-type другой не пробовал ставить?
 

nerezus

Вселенский отказник
> Content-type другой не пробовал ставить?
Пробовал.

> Поставь HttpWatch и посмотри что происходит в IE.
Смотрел. Куки и 3 заголовка из доков по session_cache_limiter
Вот они и мешают. Без них работает, но нужна сессия.
 

r4sh

Новичок
Наиболее простой вариант в данном случае, генерировать id сессии вручную, и отдавать вручную в заголовках. И использовать session_set_save_handler, либо вручную создать файл с сессией.
 
Сверху