所以,我有一个发送以下内容的文件:
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中使用
答案 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)