使用Internet Explorer打开JasperReports服务器/Tomcat的文件内容资源(Excel)时,会内联显示二进制数据 内容类型/接受/MIME HTTP头问题 JasperReports服务器(5.2.0)(更新日期2014-08-20/21:5.5.0和5.6.0 在Tomcat 7上运行 客户尝试 Internet Explorer 5.2.0测试(以下默认值) 9.0.8112.16421 64位(以下默认值) 11.0.9600.17105 64位 5.5.0试验(更新2014-08-20) 8.0.7601.17514 9.0.8112.16421 10.0.9200.16384 火狐28.0 铬(34.0.1847.131米)
如果我在JasperReports服务器Web GUI中导航到我以前上传的InHiltsResource(内容资源)*.xlsx Excel文档,它在Firefox和Chrome中运行良好,提供保存或打开文件,但在Internet Explorer中失败,通过在选项卡中显示文件二进制内容:-( 我做了很多研究,但没有找到确切的原因,尽管有些观点可能会指出原因: (更一般的观察:)使用Internet Explorer打开JasperReports服务器/Tomcat的文件内容资源(Excel)时,会内联显示二进制数据 内容类型/接受/MIME HTTP头问题 JasperReports服务器(5.2.0)(更新日期2014-08-20/21:5.5.0和5.6.0 在Tomcat 7上运行 客户尝试 Internet Explorer 5.2.0测试(以下默认值) 9.0.8112.16421 64位(以下默认值) 11.0.9600.17105 64位 5.5.0试验(更新2014-08-20) 8.0.7601.17514 9.0.8112.16421 10.0.9200.16384 火狐28.0 铬(34.0.1847.131米),excel,internet-explorer,tomcat,http-headers,jasperserver,Excel,Internet Explorer,Tomcat,Http Headers,Jasperserver,如果我在JasperReports服务器Web GUI中导航到我以前上传的InHiltsResource(内容资源)*.xlsx Excel文档,它在Firefox和Chrome中运行良好,提供保存或打开文件,但在Internet Explorer中失败,通过在选项卡中显示文件二进制内容:-( 我做了很多研究,但没有找到确切的原因,尽管有些观点可能会指出原因: (更一般的观察:) IEs/Jasper GUI发送的HTTP请求头(ACCEPTstring)似乎错误/不完整/IE不兼容 (因此
- IEs/Jasper GUI发送的HTTP请求头(
string)似乎错误/不完整/IE不兼容ACCEPT
- (因此,Jasper Servlets HTTP响应头(
string)似乎是错误的/不完整的/IE不兼容的Content-Type
- (因此,Jasper Servlets HTTP响应头(
- JasperServer本身(或者在交付时一定程度上作为容器的Tomcat)不应该尝试确定要交付的内容类型吗?
- 可以让用户手动设置,也可以通过试探法(文件扩展名、内容解析等)来确定。
- 这样,它也可以与文件一起存储(我只会在用户希望覆盖启发式确定类型的结果时才这样做)
- 由于文件名或URL已经很容易表明它是一个*.xlsx文件,并且内容以
开头,因此它已经强烈表明它确实是一个(压缩)Excel文件PK…
- 因此,我将看到两种基本的方法,这通常会起作用。。。
- 请求头(Jasper交付的GUI页面)应明确定义内容类型(可能仅当响应功能本身无法轻松确定时)
- (通常可能更合适:)响应头(Jasper/Tomcat服务器逻辑)应该明确地设置请求的、正确的或估计的内容类型
- 查看IE或FF的头响应,可以清楚地看到此处未设置任何
,尽管REST-API调用将其设置为内容类型
应用程序/八位字节流;charset=UTF-8
- 查看IE或FF的头响应,可以清楚地看到此处未设置任何
- 可以让用户手动设置,也可以通过试探法(文件扩展名、内容解析等)来确定。
- ok:FF和IE的HTTP响应头对我来说没有显著差异(尽管请求头非常不同)(见下文),因此表明结果内容检测的魔力存在一些问题(在这种情况下FF和Chrome似乎更好)
- IE和FF的HTTP头请求/响应周期:
- IE9(通过车载开发工具捕获):
- 请求标题
Anforderung GET http://...:8080/jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Accept application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */* Accept-Language de-DE User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) UA-CPU AMD64 Accept-Encoding gzip, deflate Host ...:8080 Proxy-Connection Keep-Alive Cookie userTimezone=Europe/Berlin; JSESSIONID=0FEF6E9F46EB2202A041A0A6F37B249A; userLocale=de_DE; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/...
Antwort HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Pragma Content-Language de-DE Content-Length 453242 Date Thu, 08 May 2014 10:54:46 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
(Request-Zeile) GET /jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Host viasaxinfo.list.smwa.sachsen.de:8080 User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language de,en-US;q=0.7,en;q=0.3 Accept-Encoding gzip, deflate Referer http://...:8080/jasperserver/flow.html?_flowId=searchFlow Cookie userLocale=de; userTimezone=Europe/Berlin; JSESSIONID=E3989F65A4198047DA87FBB7BB73ABBA; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/... Connection keep-alive
(Status-Zeile) HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Content-Language de Content-Length 453242 Date Thu, 08 May 2014 11:00:48 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
- 响应标题
Anforderung GET http://...:8080/jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Accept application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */* Accept-Language de-DE User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) UA-CPU AMD64 Accept-Encoding gzip, deflate Host ...:8080 Proxy-Connection Keep-Alive Cookie userTimezone=Europe/Berlin; JSESSIONID=0FEF6E9F46EB2202A041A0A6F37B249A; userLocale=de_DE; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/...
Antwort HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Pragma Content-Language de-DE Content-Length 453242 Date Thu, 08 May 2014 10:54:46 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
(Request-Zeile) GET /jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Host viasaxinfo.list.smwa.sachsen.de:8080 User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language de,en-US;q=0.7,en;q=0.3 Accept-Encoding gzip, deflate Referer http://...:8080/jasperserver/flow.html?_flowId=searchFlow Cookie userLocale=de; userTimezone=Europe/Berlin; JSESSIONID=E3989F65A4198047DA87FBB7BB73ABBA; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/... Connection keep-alive
(Status-Zeile) HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Content-Language de Content-Length 453242 Date Thu, 08 May 2014 11:00:48 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
- 请求标题
- FF(使用HttpFox插件捕获)
- 请求标题
Anforderung GET http://...:8080/jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Accept application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */* Accept-Language de-DE User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) UA-CPU AMD64 Accept-Encoding gzip, deflate Host ...:8080 Proxy-Connection Keep-Alive Cookie userTimezone=Europe/Berlin; JSESSIONID=0FEF6E9F46EB2202A041A0A6F37B249A; userLocale=de_DE; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/...
Antwort HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Pragma Content-Language de-DE Content-Length 453242 Date Thu, 08 May 2014 10:54:46 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
(Request-Zeile) GET /jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Host viasaxinfo.list.smwa.sachsen.de:8080 User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language de,en-US;q=0.7,en;q=0.3 Accept-Encoding gzip, deflate Referer http://...:8080/jasperserver/flow.html?_flowId=searchFlow Cookie userLocale=de; userTimezone=Europe/Berlin; JSESSIONID=E3989F65A4198047DA87FBB7BB73ABBA; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/... Connection keep-alive
(Status-Zeile) HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Content-Language de Content-Length 453242 Date Thu, 08 May 2014 11:00:48 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
- 响应标题
Anforderung GET http://...:8080/jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Accept application/x-ms-application, image/jpeg, application/xaml+xml, image/gif, image/pjpeg, application/x-ms-xbap, */* Accept-Language de-DE User-Agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Win64; x64; Trident/5.0; .NET CLR 2.0.50727; SLCC2; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E) UA-CPU AMD64 Accept-Encoding gzip, deflate Host ...:8080 Proxy-Connection Keep-Alive Cookie userTimezone=Europe/Berlin; JSESSIONID=0FEF6E9F46EB2202A041A0A6F37B249A; userLocale=de_DE; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/...
Antwort HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Pragma Content-Language de-DE Content-Length 453242 Date Thu, 08 May 2014 10:54:46 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
(Request-Zeile) GET /jasperserver/fileview/fileview/....xlsx? HTTP/1.1 Host viasaxinfo.list.smwa.sachsen.de:8080 User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:28.0) Gecko/20100101 Firefox/28.0 Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language de,en-US;q=0.7,en;q=0.3 Accept-Encoding gzip, deflate Referer http://...:8080/jasperserver/flow.html?_flowId=searchFlow Cookie userLocale=de; userTimezone=Europe/Berlin; JSESSIONID=E3989F65A4198047DA87FBB7BB73ABBA; treefoldersTree=1%7Copen%3B4%7Copen%3B5%7Copen%3B8%7Copen%3B; lastFolderUri=/... Connection keep-alive
(Status-Zeile) HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control no-store Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Content-Language de Content-Length 453242 Date Thu, 08 May 2014 11:00:48 GMT X-Cache MISS from ..some-proxy-host.. X-Cache-Lookup MISS from ..some-proxy-host..:8080 Via 1.1 ..some-proxy-host..:8080 (squid/2.7.STABLE8) Connection keep-alive Proxy-Connection keep-alive
- 请求标题
- IE9(通过车载开发工具捕获):
- 正常:IE中的兼容性视图对它没有帮助
- 检查潜在的HTTP响应问题(不同)
:应具有与Pragma
缓存控制:Public
:我想这不重要内容语言
- 检查潜在的HTTP请求问题
- 请求头行的顺序应该无关紧要
:有问题吗?接受
- 看看这些规格看起来还可以
:应该没关系接受语言
:内容应该无关紧要Cookie
:禁用/启用代理设置不会改变某些内容代理连接
- ok:tomcat7/conf/web.xml中的MIME类型设置
<mime-mapping> <extension>xlsx</extension> <mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type> </mime-mapping>
- HTTP响应头
Antwort HTTP/1.0 200 OK Server Apache-Coyote/1.1 Cache-Control private Expires Thu, 01 Jan 1970 01:00:00 CET P3P CP="ALL" Content-Disposition attachment; filename=....xlsx Content-Type application/octet-stream;charset=UTF-8 Date Fri, 09 May 2014 12:44:05 GMT X-Cache MISS from LIST-SRV-PROXY03 X-Cache-Lookup MISS from LIST-SRV-PROXY03:8080 Via 1.1 ...some-proxy-host...:8080 (squid/2.7.STABLE8) Connection close
fileData=true
返回预期的资源元数据XML(内联显示)
1399636098445
我花了相当长的时间在这个问题上,但谷歌都没有(我想知道为什么没有其他人会有这个问题,尽管这在我看来很常见)各种调试也没有帮助。也许我必须详细地使用相关的Jasper类来进一步调试,但也许其他人也有这个问题,或者知道解决方案?似乎有一种手动解决方法: 我们实现了一个servlet过滤器类,以尝试在我们知道MIME类型设置错误的情况下设置响应的内容配置头