IE не может загрузить foo.jsf. IE не смог открыть этот интернет-сайт. Запрошенный сайт либо недоступен, либо не может быть найден
Я предоставляю загрузку файла (обычно CSV или PDF) в моем веб-приложении JSF на хосте HTTPS (SSL). Он отлично работает в большинстве браузеров, только IE7/8 дает следующую ошибку:
Internet Explorer не может загрузить foo.jsf. Internet Explorer не смог открыть этот интернет-сайт. Запрошенный сайт либо недоступен, либо не может быть найден. Повторите попытку
Я думаю, что ошибка связана с тегом JSF <h:commandLink>
, не совместимым с IE.
<h:commandLink value="Download" action="#{bean.download}" />
Как это вызвано и как я могу его решить?
Ответы
Ответ 1
Это типичное сообщение об ошибке MSIE, когда загрузка была предоставлена через HTTPS (SSL), в то время как заголовки ответов были настроены на то, чтобы отключить кеш браузера с помощью no-cache
. Эта проблема не связана с JSF.
Вам нужно отключить заголовки ответов, которые влияют на кеш браузера. Он не должен содержать инструкцию no-cache
. Вы можете установить его на public
, private
или no-store
.
response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "public");
См. также MS KB Q316431.
Кроме того, если вы запускаете сервер WebSphere Application Server, добавьте заголовок ниже, чтобы предотвратить его переопределение заголовка Cache-Control
:
response.setHeader("CookiesConfigureNoCache", "false");
См. также IE не может загружать файлы через SSL, обслуживаемые WebSphere.
Ответ 2
Проблема не будет связана с jsf, поскольку она просто преобразует commandbutton в html, который доступен во всех браузерах. Я предполагаю, что проблема в abcBean.downloadCSV. Правильно ли вы устанавливаете тип контента в файле csv?
Можете ли вы описать, что происходит в вашем методе действий?