Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Невозможно загрузить файлы с веб-страницы с шифрованием SSL в IE8 + - нельзя изменять заголовки в ASP.NET

Автор вопроса: SupportSquidОтветов: 2

Мне ужасно трудно заставить веб-страницу работать, и я действительно могу помочь. Страница обслуживается через IIS 7 с включенным SSL. На нем пользователь может загрузить документ .rtf или .zip из нескольких файлов .rtf. Это отлично работает в FF и Chrome, но как только IE вводится, конечный пользователь получает всплывающее окно со следующей ошибкой:

Невозможно открыть этот Интернет-сайт. Запрошенный сайт либо недоступен, либо не может быть найден. Пожалуйста, повторите попытку позже.

Используя Fiddler, я вижу, что для заголовка Cache-Control установлено значение No-cache, а для Pragma также установлено значение no-cache. По данным нескольких форумов и блогов, это заставляет IE запрещать загрузку файлов со страницы.

Я попытался изменить заголовки в коде ASP.NET следующим образом:

Response.AppendHeader("Pragma", "public");
Response.AppendHeader("Cache-Control", "must-revalidate,
    post-check=0, pre-check=0");
Response.AppendHeader("Cache-Control", "public");

и это:

Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetMaxAge(TimeSpan.FromMinutes(1));
Response.Cache.SetValidUntilExpires(true);

ни один из которых не работает. Заголовки по-прежнему не кешируются.

Затем я попытался добавить пользовательские модификации заголовков на веб-сайт через модуль заголовков ответа HTTP IIS, но это тоже не сработало.

Эта ветка подходит к ответу на мой вопрос, но не указывает, как они смогли переписать заголовки.

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

  • попробуйте: Response.CacheControl = public или Response.CacheControl = private Aristos 03.02.2012
  • К сожалению, это тоже не работает. Заголовок по-прежнему отображается как "Cache-Control: no-cache". SupportSquid 03.02.2012

http-headersiis-7

Ответы

Ответ 1 · рейтинг 1 · Etch

Вот ссылка на ту же проблему, что и у меня. За исключением того, что у меня он был с .pdf. Фактически это применимо ко всем типам статических файлов.

IE8 и кэширование на стороне клиента

Ответ 2 · Travis

На него уже ответили, но я подумал, что добавлю еще один ответ, который мне помог.

Поскольку вы используете IIS 7, вы можете использовать

Response.Headers.Remove("Pragma")

чтобы удалить заголовок Pragma. Метод AppendHeader не переопределяет какие-либо ранее существовавшие заголовки, включая другие заголовки Pragma, поэтому "Pragma: no-cache" все еще присутствует. Теперь, с IIS 7, вы можете удалить его.

Если у вас нет IIS 7 или ваш локальный компьютер настроен для запуска IIS 6, даже если у вас есть IIS 7, как и у меня, вы получите исключение "Эта операция требует режима интегрированного конвейера IIS". Просто убедитесь, что вы используете IIS 7, и все будет хорошо.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы