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

本文介绍了解决BIRT报表在跨域环境下出现“视图区不可用或者已经过期”的问题。主要通过调整IE浏览器的安全设置及在服务器响应头中添加P3P策略来实现跨域访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 :

- 视图区不可用或者已经过期。
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");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值