我如何意识到 IE7 和 IE8 何时显示"to help protect your bla bla"?因为它阻止我的 servlet 将字节数组作为文件提供下载



当返回要下载的zip文件(字节数组)时,ie7和ie8阻止下载,并表示"帮助保护您的bla-bla"。然后当我点击这个栏并点击"下载文件"。页面重新加载后,无法开始下载。因为我的下载只有在点击链接时才开始。

firefox没有问题。我只知道是怎么发现这种情况的?

告诉你这个系统是如何工作的:

我的下载链接:

<a href="javascript:" onclick="getSelectedCheckBoxes();downloadForm.submit()">downloadr</a>

单击此链接后,我将在ProcessAction中执行一些操作,然后portlet返回到jsp。在jsp中,下面的代码转发到为下载服务的servlet:

location.href="<%=request.getContextPath()%>/ZipDownloadServlet?cacheKey=blabla"

问题是您试图下载的资源不是幂等的(即,它不是GET,而是应该启动下载的POST。为了解决IE的这个问题,我建议在POST和下载之间设置重定向,因此

  • POST准备下载(可能检查POSTed参数,等等)
  • 然后使用具有CCD_ 1报头的HTTP 303响应代码重定向到可以通过GET请求资源的(临时)URL
  • 当IE决定要向用户请求权限,然后再次获取时,这是没有问题的,因为你的资源是幂等的,可以根据IE的喜好下载

您必须确保仅在用户启动的事件处理程序(通常是页面中的"点击"事件)中发出文件下载的HTTP请求。(事实上,可能只有点击事件才有效;我没有费心去调查,因为几乎总是会有"点击"。)

您无法阻止浏览器以这种方式运行。

最新更新