我有一个PHP脚本,可以在新窗口中将文件下载到客户端。它在firefox中运行良好,但在IE8中窗口打开然后立即关闭。请注意,这仅适用于某些文件(如text / plain类型),但对于其他文件(例如:application / pdf),它可以正常工作。
我的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 :(得分:0)
我首先要删除所有不需要的响应标头,特别是非敏感的响应标头,例如Content-Transfer-Encoding和Content-Description。
可能的原因可能是缓存信息被破坏,或者IE无法正确处理多种类型的Vary响应头。
答案 1 :(得分:0)
它似乎是IE的反弹出技术。即使我在IE的设置中将该网站标记为sage,它仍会阻止..
解决方案是在相同的窗口(而不是_blank)开始下载,IE很高兴。我可以在新窗口中打开所有其他浏览器。