无法在IE 8中显示来自HTTPS的PDF(在64位Vista上)

Dou*_*ugN 43 pdf https 64-bit internet-explorer internet-explorer-8

我有一个本土的HTTPS服务器,提供简单的文件(它嵌入在我的应用程序中).它很棒 - 一直在使用它.

最近添加了SSL支持 - Chrome,FireFox和IE都喜欢它并加载页面就好了.

我发现的问题是当我尝试通过HTTPS连接加载PDF文件时.出于某种原因,PDF从不在IE 8中显示(64位Vista上为64位).它在Chrome中运行良好.当使用普通HTTP时,它在IE 8中运行良好 - 仅在使用HTTPS时失败.

注意:当提到IE 8时,它是64位Vista上的32位IE 8,尽管64位IE 8具有相同的行为.

这让我觉得它是某种IE 8/HTTPS/PDF/64位操作系统问题,但我不确定.

用于IE 8的DebugBar显示请求和响应完全符合预期 - 完全没有错误.IE 8没有显示任何错误或任何内容 - 纯白屏(或我尝试加载PDF之前显示的页面).清除缓存/ cookie /等.

IE/PDF/HTTPS是否存在任何已知问题?

Dou*_*ugN 39

以为我会回来给出最后的答案.

感谢所有建议"不要将加密的页面保存到磁盘"的人.

我遵循了EricLaw的建议并设置:

Cache-Control: private 
Run Code Online (Sandbox Code Playgroud)

我也发现我有Pragma: no-cache,我删除了.

像魅力一样工作:)

  • 标题集Pragma"no-cache"是罪魁祸首 - 删除这使得IE8再次显示PDF.谢谢你,Internet Explorer团队再浪费2个小时. (2认同)

wwe*_*ker 10

我遇到了同样的问题,并且只能通过要求用户修改其安全设置以关闭"不在 Internet选项"对话框的"高级"选项卡中将加密的页面保存到磁盘来使其工作:http: //support.microsoft的.com/KB/812935

...然后立即恐慌,我开始查看代码(使用VB的ASP.NET).我使用了fiddler,发现即使我没有指定缓存控制头,它似乎也在为我自动指定no-store.解决这个问题的关键实际上是在这个PHP问题中.通过将缓存控制标头设置为max-age = 1,文件将被缓存1秒,足以让Adobe Reader从磁盘中取出并将其加载到内存中.我更新了我们的代码以生成PDF,如下所示:

Response.ClearContent()
Response.ClearHeaders()
Response.AddHeader("cache-control", "max-age=1")
Response.ContentType = "application/pdf"
Response.AddHeader("content-disposition", "attachment; filename=whatever.pdf")
Response.AddHeader("content-length", mem_stream.Length.ToString)
Response.BinaryWrite(mem_stream.ToArray())
Response.Flush()
Response.End()                                
Run Code Online (Sandbox Code Playgroud)

更新:我认为它有效,但我想我说的太快了.我在这个问题上创建了一个问题.


so_*_*_mv 10

response.setHeader("Cache-Control","private");
Run Code Online (Sandbox Code Playgroud)

在IE8和IE9中为我们做了诀窍.

这不需要更改浏览器中的设置.