Ответ 1
Точно так же, как rymo сказал set Cache-Control: private
, Если у вашего заголовка ответа есть Pragma :no-cache
, вы также должны изменить его на Pragma: token
.
У меня проблема с моим сайтом и IE. У меня есть файл Document.ashx, который становится документом из моей базы данных в зависимости от параметра, переданного в строке запроса.
Файл работает, если:
Не работает, если:
Windows Internet Explorer
Невозможно загрузить Document.ashx из MyHostName.
Невозможно открыть этот интернет-сайт.
Запрошенный сайт либо недоступен, либо не может быть найден.
Повторите попытку позже.
Кто-нибудь знает, что может вызвать это. Естественно, он отлично работает в Firefox.
У меня есть несколько человек в моем офисе, чтобы попробовать его с IE, и все они получают ту же проблему. Все говорят, что это работает в Firefox.
Точно так же, как rymo сказал set Cache-Control: private
, Если у вашего заголовка ответа есть Pragma :no-cache
, вы также должны изменить его на Pragma: token
.
На основе предложенной здесь статьи KB Дэвида (Загрузка файлов Internet Explorer через SSL не работает с заголовками управления кэшем), мы изменили наши исходящие заголовки от Cache-Control: no-cache
до Cache-Control: private
. Это, похоже, разрешило проблему IE8, не затрагивая другие браузеры. Опасайтесь использовать Cache-Control: no-store
, а также.
Оказывается, IE8 можно сделать, чтобы принять кэширование с полным отключением, но оно очень разборчиво относительно точного порядка заголовков. Поэтому вместо того, чтобы возвращаться к private
(который позволяет определенное кеширование и может не соответствовать вашим потребностям безопасности) используйте:
Cache-Control: no-store, no-cache, must-revalidate
Если указано в этом точном порядке - сначала no-store
THEN no-cache
- IE8 позволит скачивать файл без ошибок. Также убедитесь, что заголовок Pragma
НЕ установлен.
Эта проблема возникает в IE8 и, возможно, более ранних версиях, но разрешена в IE9+. Это связано с загрузкой документов через SSL.
Чтобы решить проблему в моем приложении, мне пришлось добавить следующие два заголовка к загрузке (написанные на PHP):
header("Cache-Control: private");
header("Pragma: cache");
Похоже на то, что я столкнулся с IE 8. Когда я отслеживал решение, я столкнулся с двумя решениями. Один из них должен исправить эту проблему.
Просто, чтобы вы знали, что это исправление на клиентской машине, так как IE-код вызывает эту проблему.
Исправления: http://support.microsoft.com/kb/815313 http://support.microsoft.com/kb/323308
В чем вся суета? Проблема связана с немедленным истечением кеша или отсутствием кэша.
Для устранения проблемы выполните следующие действия:
Перейти к server system -> Run Inetmgr -> RightClick and properties on the folder(e.g images) -> httpHeaders ->
Теперь либо снимите флажок Включить срок действия контента, либо отметьте Истекает после и дайте 1 мин.
Это для IIS 5.
Аналогичная настройка будет для IIS 6/7.
Счастливое программирование!
У меня была такая же проблема, и я был разочарован попыткой всех вышеуказанных методов ее исправления. Очевидно, что я не хотел, чтобы на клиентском компьютере было сделано решение, поэтому все, что я сделал, это просто удалить параметр "Pragma" из заголовка, и он начал работать красиво. ПРОБЛЕМА РЕШЕНА.
если вы используете asp.net. удалите код с кешем настроек
Прокомментировать следующее
Response.Clear();
Response.Buffer = true;
Response.Charset = "";
**//Response.Cache.SetCacheability(HttpCacheability.NoCache);**
Response.ContentType = contentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.BinaryWrite(bytes);
Response.Flush();
Response.End();
У нас была та же самая проблема, встроенная в наше развертывание ClickOnce www.Qiqqa.com. Я подозреваю, что это связано с "обнюхиванием типа MIME", которое делает IE, когда он получает application/octet-stream
- я думаю, чтобы защитить пользователя от вредоносного кода.
В любом случае, чтобы решить проблему, мы изменили тип mime наших .deploy
файлов на text/plain
- очевидно, не идеально, но в то же время я не знаю сценарий, где мы могли бы иметь .deploy
на нашем сервере, который пользователь просматривал бы за пределами ClickOnce.
Проблема решена.
dynamic создайте Iframe, установите src на страницу загрузки страницы, добавьте в тело.
function downloadInIFrame(fileId) {
var url = "download.aspx?fileId=" + fileId;
var iframe = document.createElement("iframe");
iframe.src = url;
iframe.style.display = "none";
document.body.appendChild(iframe);
}
этот код хорошо работает для меня.
Если вы делаете вкладку "Сохранить цель как..." или "Открыть на новой вкладке", она работает нормально. Но все же ошибка в IE8. У меня такая же реализация... как создание div (display: none) с iframe и добавление его к телу и установка src в кадр, тип содержимого которого является прикладным/двоичным.
У нас была такая же проблема с IE8 с использованием MVC-контроллера с тегом NoCache
. Это устанавливает Response.Cache.SetNoStore
, который прерывает загрузку файлов в IE.
Чтобы решить проблему - reset Политика кэширования Http через отражение.
Эта проблема вызвана установкой браузера в Internet Explorer. В Internet Explorer перейдите к Tools
> options
> Advanced options
. В разделе Безопасность найдите и снимите Не сохраняйте зашифрованные страницы на диске.