一尘不染

IE 无法下载 foo.jsf。IE 无法打开此 Internet 站点。

javascript

我在 HTTPS (SSL) 主机上的 JSF Web 应用程序中提供文件下载(通常是 CSV 或 PDF)。它在大多数浏览器中都可以正常工作,只有 IE7/8 会出现以下错误:

Internet Explorer 无法下载 foo.jsf。Internet Explorer 无法打开此 Internet 站点。请求的站点不可用或找不到。请再试一次

我认为该错误与 JSF<h:commandLink>标签与 IE 不兼容有关。

<h:commandLink value="Download" action="#{bean.download}" />

这是如何引起的,我该如何解决?


阅读 156

收藏
2022-02-16

共1个答案

一尘不染

这是一个典型的 MSIE 错误消息,当通过 HTTPS (SSL) 提供下载而响应标头设置为通过no-cache. 此问题与 JSF 无关。

您需要放宽对浏览器缓存有影响的响应标头。它不应该包含no-cache指令。您可以将其设置为public,privateno-store.

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "public");

另请参阅 MS 知识库 Q316431

此外,如果您碰巧在 WebSphere Application Server 上运行,那么还要添加以下标头,以防止它在Cache-Control之后覆盖标头:

response.setHeader("CookiesConfigureNoCache", "false");   
2022-02-16