Экспорт в Excel не работает в IE по SSL (https) - PullRequest
2 голосов
/ 12 января 2011

Я пытался что-то исправить на защищенном веб-сайте (https), который представляет собой кнопку «Экспорт в Excel», которая генерирует файл CSV.

Работает в Firefox, Chrome и т. Д., Но не в Internet Explorer.

Я изменил заголовки, исключив отсутствие кэширования а также отредактировал конфигурацию заголовка http IIS, установив дату истечения 1 день.

Я понятия не имею, что может происходить и как это решить.

Ребята, вы знаете, как это исправить? Я прочитал очень много постов, и все они говорят одно и то же ... кэширование.

Спасибо

ОБНОВЛЕНИЕ 1:

относительно ошибки, которую я получаю, я получаю предупреждение IE, в котором говорится: «Internet Explorer не может загрузить filename.aspx с web.address.com Internet Explorer не смог открыть этот интернет-сайт. Запрашиваемый сайт либо недоступен, либо не найден. Пожалуйста, попробуйте позже.

Как я уже сказал, все работает из SSL (https), но кнопка экспорта в Excel ломается в https.

ОБНОВЛЕНИЕ 2:

Я использую следующие заголовки:

Response.ClearContent();
                Response.Clear();
                Response.Buffer = true;
                Response.AddHeader("content-disposition", "attachment; filename=" + name.Trim() + ".csv");
                Response.AddHeader("Cache-Control", "no-cache");
                Response.AddHeader("Pragma", "public");
                Response.AddHeader("Content-Transfer-Encoding", "binary");
                Response.AddHeader("Content-Length", "2026");

                Response.Charset = "";
                //Response.ContentType = "application/vnd.ms-excel";
                Response.ContentType = "text/csv";

Ответы [ 6 ]

1 голос
/ 06 сентября 2011

Проблема заключается в том, что до IE9 загрузка Internet Explorer не работала через SSL при использовании заголовков управления кэшем (http://support.microsoft.com/kb/323308).

Просто удалите: Response.AddHeader("Cache-Control", "no-cache");

Это работает в https для IE 6,7 и 8.

0 голосов
/ 13 декабря 2013

Мы столкнулись с этой проблемой на работе, она оказалась ошибкой в ​​Internet Explorer (в нашем случае IE8-), которая выдает ошибку при попытке загрузить файл в SSL. Проблема в том, что если сервер отправляет браузеру заголовок http, который отключает кэширование, Explorer выдает ошибку.

Серверная часть решения состоит в том, что вы должны перезаписать этот заголовок, чтобы указать IE8 кэшировать ответ, например Cache-Control: private. Будьте внимательны, чтобы некоторые серверы приложений (например, в нашем случае Websphere Application Server) автоматически добавляли no-cache="Set-Cookie" при установке файла cookie.

Наконец, есть другое решение, если применимо, которое решает проблему, но оно должно быть применено на стороне клиента в браузере:

посмотрите на метод 1: http://support.microsoft.com/kb/2549423

0 голосов
/ 26 сентября 2013

Добавьте параметры запроса, и он будет работать -

response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Cache-Control", "max-age=30");
response.setHeader("Pragma", "public");
response.setContentType("application/docx");
0 голосов
/ 22 февраля 2012

Мое решение очень похоже на предыдущее лицо (TGuv). Я удалил следующую строку кода, она отлично работает:

Response.Cache.SetCacheability(HttpCacheability.NoCache);
0 голосов
/ 13 января 2011

Имея проблемы с IE и ssl в прошлом, я обнаружил, что следующие заголовки

Cache-Control: cache, must-revalidate
Pragma: public
Content-Type: application/vnd.ms-excel  // MIME type
Content-Disposition: attachment; filename="excelDownload.xls"
Content-Transfer-Encoding: binary
Content-Length: 1024  // size as appropriate

работа для меня (в дополнение к обычным заголовкам Expires и Last Modified)

0 голосов
/ 12 января 2011

Microsoft изменила IE, чтобы автоматически не преобразовывать простой текстовый файл (например, CSV). Вы должны отправить правильный тип MIME. У меня нет удобной информации.

...