在IE8中显示PDF文件时header()的问题

时间:2009-08-07 04:34:19

标签: php pdf header

所以,我有一个发送以下内容的文件:

header("Pragma: public");
header("Expires: 0");
header("Cache-Control: private");
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=file.pdf");
header("Content-length: 7735");

然后我回显文件 - 它是一个PDF文件。

在IE6&关于XP的7(和FF) 在XP或Vista上运行IE8时,完全相同的代码没有显示任何内容。 没有安全警告等,所以我不认为它与此有关。

并且,如果我的记忆正确地为我服务,那么这在IE8上已经有效了。

我在这里做错了什么?我错过了标题中的内容吗?

在IE8中查看PDF时,有没有办法让我看到正常的标题信息,所以我知道要模拟什么?

在查看事物后,当SSL启用时,它仍可在IE8 EXCEPT中使用

6 个答案:

答案 0 :(得分:18)

在HTTPS和IE8下,这些标题解决了下载问题:

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: public");

其他X-something标题没有任何区别。

答案 1 :(得分:2)

它可能与SSL有关。我阅读this article(德语,代码示例),作者设置了以下标题:

header('Pragma: anytextexeptno-cache', true);

答案 2 :(得分:1)

我不确定需要什么,但这是你可以做的。 将文件临时放在服务器上的公共场所,制作syre,你可以用IE8中的直接链接下载,使用firefox LiveHTTP标题或类似文件来获取服务器发送的所有标题。在脚本中以完全相同的方式和顺序吐出它们。 (不要忘记删除文件)。

答案 3 :(得分:1)

我想添加的东西,因为我也遇到了这个问题,使用Joomla的方式略有不同。

普通PDF-在所有浏览器中,内容输出都运行良好。

但是从我自己的组件中生成pdf(使用JDocument,tho)会产生上面提到的bevahiour。

我的解决方案:使用view.html.php中的以下语句显式启用我的组件的缓存:

JResponse::allowCache(true); 

也许这有助于某人。

答案 4 :(得分:0)

我正在使用HTTPS,但我遇到了一些问题,但下载时使用了这些标题。 试试吧。

header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Pragma: public"); 
header("X-Download-Options: noopen "); // For IE8
header("X-Content-Type-Options: nosniff"); // For IE8
header("Content-type: application/pdf");
header("Content-disposition: inline; filename=file.pdf");
header("Content-length: 7735");

问题是你无法直接打开。只是保存。

答案 5 :(得分:0)