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?

Можете ли вы описать, что происходит в вашем методе действий?