2009-08-07 67 views
8

一个PDF文件时,()所以,我有发送下列文件:与标题显示的问题在IE8

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中正常工作& 7(在XP和FF上) 当在XP或Vista上运行IE8时,相同的代码不会显示任何内容。 没有安全警告等,所以我不认为它与此有关。

而且,如果我的记忆正确地服务了我,那么前段时间对IE8有效。

我在这里做错了什么?我是否错过标题中的某些内容?

当我在IE8中查看PDF时,有什么方法可以查看正常的标题信息,所以我知道该模拟什么?

看事情它仍然工作在IE8除了当SSL是

+0

不要发送'内容Length'头,让网络服务器做到这一点。 – Gumbo 2009-08-07 13:04:18

回答

1

后,我不知道什么是需要的,但在这里,你能做些什么。 把文件临时放在你服务器上的公共场所,让你可以在IE8中使用直接链接下载它,使用firefox LiveHTTP头文件或类似文件来抓取服务器发送的所有头文件。在脚本中以完全相同的方式和顺序吐出它们。 (并且不要忘记删除文件)。

+1

我打算说完全一样的东西。提琴手也会给你带有IE的头。 – russau 2009-08-07 05:08:34

+0

谢谢,这个伎俩。我发现我发送了错误的标题集到IE浏览器(我正在使用我发送给Firefox的设置) – Jason 2009-08-07 14:02:31

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"); 

问题是你不能直接打开。保存。

1

东西我想补充,因为我面对这个问题,也是在使用Joomla的方式略有不同。

普通PDF-在所有浏览器中,内容输出都正常工作。

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

我的解决办法:明确启用缓存使用下面的语句在view.html.php我的组件:

JResponse::allowCache(true); 

或许,能够帮助他人。

18

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

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

其他X-东西头没有任何区别。

+0

这是为我工作的。而且,在Cache-Control头部的任何位置都有'no-cache'会导致IE8下载失败。我读过其他地方,这是因为IE8在传输过程中将下载缓存在临时文件夹中,但无法验证这一点。 – jamesvl 2013-02-21 23:58:07

+0

是的,这工作!似乎也在Firefox中工作。 – 2013-02-26 22:17:13

+0

这是一个感谢stackoverflow存在的时代,而@mikikg就是这种情况。我寻找这个头修复了几个星期。 – 2013-07-17 15:14:30

2

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

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