2012-04-21 118 views
0

我有一个PHP脚本,在新窗口中将文件下载到客户端。它在Firefox中很好用,但在IE8中,窗口打开,然后立即关闭。注意这仅仅发生在一些文件(如文本/纯文本类型)上,但是对于其他文件(例如:application/pdf),它可以正常工作。IE在下载开始时立即关闭窗口

我的PHP脚本添加了下面显示的http标题(加上我的代理服务器添加的一些标题)。我无法弄清楚什么是错的。在php中使用头文件后,我发现删除Content-Type和Content-Disposition似乎有影响,但我只是乱搞,无法真正理解错误。

我从Firefox抓取标题,如下所示。任何人都可以看到会导致IE立即关闭的东西我试着将MIME类型设置为应用程序/文本,但没有区别。

HTTP/1.0 200 OK 
Date: Sat, 21 Apr 2012 21:02:13 GMT 
Server: Apache 
Pragma: public 
Expires: 0 
Cache-Control: public 
Content-Description: File Transfer 
Content-Disposition: attachment; filename="Sample_Text_File.txt" 
Content-Transfer-Encoding: binary 
Vary: Accept-Encoding 
Content-Encoding: gzip 
Content-Length: 47 
Content-Type: text/plain 
X-Cache: MISS from firewall.mydomain.ca 
X-Cache-Lookup: MISS from firewall.mydomain.ca:3128 
Via: 1.0 firewall.mydomain.ca (squid/3.0.STABLE7) 
Proxy-Connection: close 

回答

0

它似乎是IE的反弹出技术。尽管我在IE的设置中将该网站标记为圣人,但它仍然阻止。

解决方案是在相同的窗口(而不是_blank)开始下载,IE很高兴。我可以在新窗口中打开所有其他浏览器。

0

我会从删除所有不需要的响应头开始,特别是非感性的如Content-Transfer-Encoding和Content-Description。

一个潜在的原因可能是缓存信息被破坏,或IE无法正确处理许多类型的Vary响应头。