Проблемы с автоматической загрузкой и предупреждением безопасности IE
У меня следующая ситуация (упрощенно):
У меня есть скрипт file.php? File=foo.pdf, который доставляет файлы вне корня документа (у него нет html, это всего лишь push-скрипт загрузки). Некоторые файлы защищены скриптом - в этом случае пользователь перенаправляется на login.php. При успешном входе в систему переменная сеанса устанавливается вместе с файлом, который пользователь хочет загрузить. Пользователь перенаправляется на home.php, где я создаю iframe с исходным файлом загрузки file.php? File=foo.pdf. Когда скрипт file.php начинает загружать файл, он сбрасывает переменную сеанса.
Это работает в Firefox, но в IE это дает мне предупреждение безопасности, и загрузка блокируется. Если я нажму на панель и разрешу загрузку, IE перезагрузит страницу. Но так как сеанс уже был сброшен, iframe не генерируется, и поэтому файл не загружается "снова".
IE, кажется, действительно запускает первую загрузку, но прерывает ее при получении заголовков. Так что, думаю, у меня нет шансов сказать, была ли загрузка прервана браузером.
У кого-нибудь есть решение этого? (Я не хочу кнопку загрузки).
3 ответа
После сумасшествия с этим (спасибо за ответы, но ни один из них не решил проблему - IE устанавливает Cookies на запрос на загрузку, но впоследствии блокирует загрузку), я склонен думать, что единственный способ справиться с этим - это предложить страница загрузки, на которой пользователь может активно щелкнуть ссылку для загрузки (или, по крайней мере, какое-то наложение для загрузки).
Я могу ошибаться, но Вы пытались сбросить переменную сеанса после отправки файла в iframe? В этом случае возможно, что когда проверка безопасности IE пройдет, переменная загрузки все еще будет существовать для следующего запроса
Вы "целитесь" на iframe в своей ссылке для скачивания?
Почему вы не нацелены ="родитель"? без html и измененного заголовка MIME (я полагаю, поток октетов или принудительное скачивание) ваша страница не будет переопределена, и ваша загрузка будет успешной.