IE无法下载foo.jsf.IE无法打开这个网站.请求的网站不可用或无法找到

mon*_*ona 12 https jsf internet-explorer download

我在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}" />
Run Code Online (Sandbox Code Playgroud)

这是怎么造成的,我该如何解决?

Bal*_*usC 15

当通过HTTPS(SSL)提供下载时,这是典型的MSIE错误消息,而响应标头已设置为禁用浏览器缓存no-cache.此问题与JSF无关.

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

response.setHeader("Cache-Control", "public");
response.setHeader("Pragma", "public");
Run Code Online (Sandbox Code Playgroud)

另请参见 MS KB Q316431.

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

response.setHeader("CookiesConfigureNoCache", "false");             
Run Code Online (Sandbox Code Playgroud)

另请参见IE无法通过WebSphere提供的SSL下载文件.