IE6-8 не может загрузить файл с сайта HTTPS

У меня есть приложение MVC .Net, у которого есть действия, которые возвращают файлы отчетов, обычно:.xslx

byte[] data = GetReport();
return File(data, 
    "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", 
    "filename.xlsx");

Это прекрасно работает в тестировании и во всех браузерах, но когда мы помещаем это на сайт SSL, это не работает для IE6, 7 и 8 (все правильные браузеры все еще работают нормально) с этой бесполезной ошибкой:

Раньше это работало в устаревшем приложении (не-MVC), которое заменяет это действие.

Мы можем'Не говорите нашим пользователям что-либо менять локально - около 60% все еще работают на IE6!

Как я могу это исправить с помощью MVC?

Обновить

Дальнейшее копание показывает, что это фундаментальный сбой в IE6-8. В соответствии сЭрик ЛоуВнутренний блог IE это происходит потому, что во время соединения SSL IE рассматривает директиву no-cache как абсолютное правило. Таким образом, вместо того, чтобы не кэшировать копию, он считает, что отсутствие кэширования означает, что он не долженсохранить копию на диск невозможно, даже еслиContent-Disposition:attachment и с явной подсказкой для местоположения загрузки.

Очевидно, что это неправильно, но покаисправлено в IE9 мывсе еще застрял со всеми пользователями IE6-8.

Используя MVC 'Атрибуты фильтра действия s создают следующие заголовки:

Cache-Control:no-cache, no-store, must-revalidate
Pragma:no-cache

Используя Fiddler, чтобы изменить их на лету, мы можем проверить заголовки, которые должны быть возвращены:

Cache-Control:no-store, no-cache, must-revalidate

Обратите внимание на порядокCache-Control должен иметьno-store до no-cache и чтоPragma директивадолжен быть полностью удаленным

Это проблема - мы используем MVC 'атрибуты действия экстенсивно, и я действительно нене хочу переписывать их с нуля. Даже если бы мы могли IIS выдает исключение, если вы пытаетесь удалитьPragma директивы.

Как вы делаете Microsoft 's MVC и IIS возвращают директиву no-cache, которую Microsoft 's IE6-8 может обрабатывать под HTTPS? Я не хочу разрешать частное кэширование ответа (согласно этомуаналогичный вопрос) или игнорировать встроенные методы MVC с переопределением (согласно моему собственному ответу, который является моим лучшим хаком).

Ответы на вопрос(2)

Ваш ответ на вопрос