“ссылка на загрузку” перестала работать в IE

Я пытался реализовать "ссылку на загрузку" и поместить ее около одной из моей таблицы отчета так, чтобы пользователи могли загрузить файл CSV и открыть его с приложениями как Excel.

Записи сгенерированы динамично на основе запроса, сделанного пользователями.

Так где-нибудь в моем контроллере существует что-то как:

response.headers['Content-Type'] = 'text/csv'
response.headers['Content-Disposition'] = 'attachment; filename=xxx.csv'
return response.stream(dynamically_generated_csv, request=request)

Это работает в обеих FireFox & Chrome, но перестало работать в IE.

Когда я распечатываю заголовки ответа, я нашел, что несколько заголовков были добавлены к моему ответу web2py:'Expires', 'Управление Кэша', и т.д...

И когда я удаляю заголовок 'Управления Кэша' путем выполнения следующего:

del response.headers['Cache-Control']

Это работает в IE.

Таким образом, кажется, что IE испытывает затруднения при контакте с загружаемым файлом с набором 'Управления Кэша' к определенному значению.

Теперь, мой вопрос:

  • Почему web2py добавляет эти заголовки ответа, неявно? и возможно без способа выделить его?

  • есть ли какой-либо побочный эффект, когда я удаляю заголовок 'Управления Кэша' этот путь?

Заранее спасибо.

6
задан Adam Crossland 4 January 2010 в 14:55
поделиться

3 ответа

Я не уверен, какие заголовки управления кэшем отправляются/пересылаются, но в IE есть ошибка с загруженными файлами, которую вы испытываете.

Для IE, вы ДОЛЖНЫ включить кэширование. Когда IE загружает файлы (например, файлы Excel), в Excel они загружаются из каталога кэша, таким образом, если вы не кэшируете их, Excel (или другое ваше приложение) не сможет загрузить файл.

Eric Law (MSFT) по теме: http://blogs.msdn.com/ieinternals/archive/2009/10/02/Internet-Explorer-cannot-download-over-HTTPS-when-no-cache.aspx

Обновление: Если, однако, вы просто хотите форсировать загрузку... например, IE не загрузил excel файл внутри окна IE... то обязательно установите полные заголовки вложения.

//PHP style
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="downloaded.pdf"');
5
ответ дан 17 December 2019 в 00:10
поделиться

Ссылка на скачивание осуществляется по https (ssl)? Если да, то IE не может справиться с загрузкой, если она настроена на кэширование. Это известная проблема с IE.

2
ответ дан 17 December 2019 в 00:10
поделиться
[

] Это не отвечает на ваш вопрос, но решает, я надеюсь, оригинальную проблему. [

] [

] Я бы просто добавил временную метку (что-то достаточно уникальное) для запроса строки ссылки на CSV-файл. Это помогло мне. [

]
0
ответ дан 17 December 2019 в 00:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: