【问题标题】:PDF created on HTTP request won't open in Internet Explorer根据 HTTP 请求创建的 PDF 不会在 Internet Explorer 中打开
【发布时间】:2012-09-19 11:00:59
【问题描述】:

我有一个 servlet,它根据请求中的一些参数即时生成 PDF 以响应响应。当我尝试在 IE 中打开/下载此文件时,我收到以下消息:

“无法从 [站点] 下载 [文件名]。 无法打开此 Internet 站点。请求的站点不可用或找不到。请稍后再试。”

这是我设置的响应:

response.setHeader("Content-Disposition", "attachment;filename=" + title + ".pdf");

response.setContentType("application/pdf");

在其他浏览器上一切正常。

更新:

我尝试过内联而不是附件。这将打开一个新窗口而不是打开/保存对话框(我希望有对话框),错误消息消失了,但新窗口在 IE 中只是空的。仍在使用其他浏览器。

我尝试了简单的双引号,文件名周围没有引号,它不包含任何未转义的字符。双引号和无引号没有区别,但是单引号会附加到文件名中,我当然不想要。

文件名不包含非转义字符。

我已经检查了this 页面上的测试,上面说attachement, with filename, no quotes 已通过所有浏览器。这是从一开始就使用的。

添加 Content-Lenght 标头没有区别。

顺便说一句,飞碟是用来制作PDF的。

【问题讨论】:

    标签: java internet-explorer pdf flying-saucer


    【解决方案1】:

    我建议看一下http://greenbytes.de/tech/tc2231/,它列出了一大堆测试用例,了解不同浏览器在Content-Disposition 标头的不同值下的行为方式。我的猜测是title 包含需要转义的空格或其他一些特殊字符,而 IE 目前正在对非转义值进行吐槽。

    【讨论】:

    • 谢谢,这很有用。但是所有浏览器都通过了等于我的标头的测试用例。标题中也没有非转义值。
    • 您发送的标头的完整值是多少?对于调试,发送的所有其他响应标头是什么?
    【解决方案2】:

    您是否尝试过以下标题:

    response.setHeader("Content-Length", lenght);
    response.setHeader("Content-Disposition", "inline; filename='" + filename + "'");
    

    文件名应该大写。

    【讨论】:

    • 我已经试过了。打开一个新窗口,并且没有任何错误消息。但是新窗口中没有内容。仍然可以在其他浏览器上正常工作。
    【解决方案3】:

    这已经有一段时间了,但我想我应该更新一下,因为找到了解决方案。

    正在使用的 CMS 添加了一些我一开始没有考虑到的标题:

    • 缓存控制:私有
    • 编译指示:无缓存

    如果没有缓存,似乎是 IE 的下载问题。这些标头在 CMS 的升级中被更改,从而解决了问题。

    例子:

    • 缓存控制:公共,max-age=31536000
    • 日期:格林威治标准时间 2012 年 12 月 6 日星期四 14:14:14
    • 到期:格林威治标准时间 2013 年 12 月 6 日星期五 14:14:14

    【讨论】:

      【解决方案4】:

      我遇到了同样的问题,最终是 IE 无法处理响应代码 201(所有其他浏览器都会处理它)。当我将其更改为 200 时,IE 下载的文件就好了。

      This post 为我指明了正确的方向。

      【讨论】:

        【解决方案5】:

        通过下面的代码,我可以在 IE 浏览器中查看 pdf。 response.setHeader("Content-Disposition", "attachment;filename=" + title + ".pdf");

        非常感谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-01-18
          • 1970-01-01
          • 1970-01-01
          • 2015-07-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-09-09
          相关资源
          最近更新 更多