8

这应该是关于IE8下载问题的老问题了。我使用 PHP 来设置响应标头,例如:

header("Pragma: public");
header("Expires: 0"); 
header("Content-type: application/octet-stream");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Length: ".strlen($content));
header("Content-Disposition: attachment; filename='$filename'");

并且连接被 Fiddler 近距离捕获。

当我尝试在 IE8(而不是 SSL)中下载带有上述标题的文件时,消息框:

“Internet Explorer 无法打开此 Internet 站点。请求的站点不可用或找不到。” 弹出并停止下载。

我在网上搜索并尝试了很多解决方案,但似乎没有一个有效。这个问题还有其他解决方案吗?

PS:我尝试过:删除响应头/在头中重置 contentType/将站点添加到受信任站点/将“不将加密页面保存到磁盘”设置为 true。

谢谢。

4

2 回答 2

5

除了 Le-roy 的回答:

我设置

Cache-Control: private, max-age=1

这为我解决了这个问题。

从 Le-roy 的链接中,如果设置了以下任何一项:

Cache-Control header with the tokens no-cache, no-store
Vary header that specifies almost anything 
Pragma header that specifies exactly no-cache

IE 下载会失败。

于 2014-03-03T10:50:54.610 回答
4

当标头中设置了 no-cache 时,IE 无法从 HTTPS 下载文件。试试这个页面http://blogs.msdn.com/b/ieinternals/archive/2009/10/02/internet-explorer-cannot-download-over-https-when-no-cache.aspx了解更多信息。

于 2013-06-06T02:22:11.050 回答