IE无法通过WebSphere提供的SSL下载文件

Tho*_*ley 8 websphere jsf internet-explorer download

当用户尝试通过https下载csv文件时,IE 7和8都会抛出错误.

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

我读到了IE与缓存相关的问题,因此我更改了响应以允许公共缓存.看到这个问题:IE无法下载foo.jsf.IE无法打开这个网站.请求的网站不可用或无法找到

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

但我仍然得到这个错误.

还有什么想法可能导致这个问题吗?这是完整的片段:

HttpServletResponse response = (HttpServletResponse) context.getExternalContext().getResponse();
response.setContentType("text/plain");
response.setHeader("Content-Disposition", "attachment; filename=\"" + browserFilename + "\"");
response.setHeader("Pragma", "public");
response.setHeader("Cache-Control", "public");
response.getOutputStream().write(contentBytes);
context.responseComplete();
Run Code Online (Sandbox Code Playgroud)

Tho*_*ley 9

Cache-Control:no-cache=set-cookie当响应中包含cookie时,WebSphere似乎会自动添加响应头.IE8及更早版本在通过SSL下载时不喜欢这样.

根据此IBM Developerworks论坛主题,有两种可能的修复方法:

  1. CookiesConfigureNoCache:false在WebSphere中为HTTP传输通道添加自定义响应头(默认情况下为true).

    response.setHeader("CookiesConfigureNoCache", "false");             
    
    Run Code Online (Sandbox Code Playgroud)
  2. 在添加cookie 之后显式设置Cache-Control标头,这将覆盖WebSphere 设置的标头.

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