2010-06-18 89 views
8

我们有JSF Web应用程序,该应用程序生成XLS文件并为用户提供链接。
所有工作正常,如果通过HTTP访问此文件。
但IE(8)无法通过HTTPS打开/保存此xls文件。
还有就是以下错误信息:无法在IE中打开xls文件

我可以在Firefox和Chrome中打开通过HTTPS相同的文档。
IE有什么问题?

页眉:

HTTP/1.1 200 OK 
Date: Fri, 18 Jun 2010 14:45:42 GMT 
Server: Apache-Coyote/1.1 
X-Powered-By: Servlet 2.5; JBoss-5.0/JBossWeb-2.1 
X-UA-Compatible: IE=EmulateIE7 
Last-Modified: Fri, 18 Jun 2010 14:45:11 GMT 
Cache-control: max-age=0, no-store, no-cache 
Pragma: no-cache 
Expires: 0 
Content-Type: application/vnd.ms-excel 
Content-Length: 6656 
Keep-Alive: timeout=5, max=100 
Connection: Keep-Alive 

回答

12

http://support.microsoft.com/kb/316431,您应该删除这些HTTP头的使用:

Pragma: no-cache 
Cache-control: no-cache,max-age=0,must-revalidate 
+0

缓存控制:max-age = 0,无存储,无缓存 Pragma:no-cache – 2010-06-18 15:19:06

+2

@Vladimir Bezugliy:删除这些。 – houbysoft 2010-06-18 15:22:06

1

你有缓存控制设置为no-cache?我遇到了类似的问题。详情请参阅this question and answer

+0

缓存控制:最大年龄= 0,无店铺,无缓存 杂注:无缓存 – 2010-06-18 15:20:48

+0

删除无缓存,看看会发生什么 – 2010-06-18 19:15:20

6

最可能的原因是HTTP响应头,这是我们必须为XLS文件在SSL专门配置

Expires: Mon, 26 Jul 1997 05:00:00 GMT 
Last-Modified: Fri, 18 Jun 2010 16:22:07 GMT 
Cache-Control: cache, must-revalidate 
Pragma: public 

的高速缓存控制 和

Content-Type: application/vnd.ms-excel 
Content-Disposition: attachment; filename="ExcelDownload.xls" 
Content-Transfer-Encoding: binary 
Content-Length: <fileSize> 

的内容

的关键项是附注:公共