birt报表视图区不可用或者已经过期解决办法

问题 :

- 视图区不可用或者已经过期。
org.eclipse.birt.report.exception.ViewerException: 视图区不可用或者已经过期。

场景 :
我的报表项目和工程项目是独立的,报表是iframe嵌入到项目中的 ,部署在tomcat7下的,winows2003服务器,放在同一tomcat下,IE,火狐,谷歌访问都没问题,部署在不同机器上的tomcat下,(报表部在win主机,项目 部在lnuix主机,)从项目中访问报表,IE 出现如上错误
,但火狐,谷歌访问都正常- 视图区不可用或者已经过期。
org.eclipse.birt.report.exception.ViewerException: 视图区不可用或者已经过期。

单独访问工程也没问题啊
就是嵌入其他项目的时候,不同服务器tomcat下出现错误 


解决办法:

问题已解决,这是一个诡异的问题,问题在于IE安全级别。
我的是IE8 ,
报表不能显示的问题可以通过修改IE设置解决,将IE设置里的“隐私”设为“低”即可解决“视图已过期”的问题。


在论坛里浏览 人家在开发中遇到的同样问题,豁然开朗,发现终极解决之道;

如下:

问题已解决。
和birt版本没关系,甚至和birt都没有关系,是由于浏览器的安全限制,Iframe跨域访问时,被访问的页面无法使用浏览器cookie,从而没办法保持session造成的。
在被访问的页面加上P3P头就可以解决。
代码如下:

response.addHeader("P3P","CP=CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR");




上面的是一位兄弟的解决办法,我的是在被请求的页面中添加如下代码:

response.addHeader("P3P","CP=CAO PSA OUR");

你可能感兴趣的:(birt)