最近项目上有些变化,部门工作人员开始着手于BIEE11G界面的定制,首先开始的是报表和图形的显示部分,目前由于此部分内容已经加入了IPAD等职能终端实现,当时使用的JDEVELOPER 开发的ADF 效果不错,延迟也没有多少。现在大家都炒作响应式设计,也想把ADF 的application用在WEB站点上。
遇到了点问题,在FLEX或者HTML中调用IFRAME控件时,
得到的HTTP请求报错如下,很值得研究:
1: 77:07:27.035 0.041 623 174
2: GET
3: (Aborted) text/html (NS_BINDING_ABORTED)
4: http://10.14.1.158:7101/Application7-ViewController-context-root/faces/jdczs.jspx?_adf.ctrl-state=1bb3lb5c3y_3&_afrRedirect=74571037281509
报的错是NS_BINDING_ABORTED,服务器主动拒绝。
再分析HTTP头,
1: (Status-Line) HTTP/1.1 200 OK
2: Date Thu, 25 Apr 2013 07:05:41 GMT
3: Transfer-Encoding chunked
4: Content-Type text/html;charset=UTF-8
5: X-ORACLE-DMS-ECID f7a7cc060a4c8848:-6d134d01:13e3ffff60e:-8000-0000000000001c65
6: X-Powered-By Servlet/2.5 JSP/2.1, JSF/2.0
7: X-Frame-Options sameorigin
值得注意的X-Frame-Option ,很显然由于I-Frame嵌入的问题
这是我定位问题的思路:
1. 部署ADF的WEBLOG进行了域控制,必须在同一站点进行IFRAME的嵌套。
沿着这个思路下去的解决方案必然是:
在同域的WEBLOGIC中再起个站点,进行桥接中转。 ---测试,失败
使用非IFRAME空间调用ADF --- 这个肯定能解决问题,但是实施起来难度较大。
2.是否 OBIEE中进行HTTP请求的控制?
翻阅文档
找到解决问题的办法
默认情况下,出于安全的考虑(clickjacking),BIEE 11g是不能直接嵌入iframe中的,
会提示“OBIEE content can not be displayed in the IFrame”
如果有这方面的需要,我们需要进行如下配置:
修改MV_HOME/instances/instance1/config/OracleBIPresentationServicesComponent/coreapplication_obips1目录下的instanceconfig.xml
在Security标签内加入<InIFrameRenderingMode>allow</InIFrameRenderingMode>
如下图所示:
1:
2:allow
3:
4:30
5:
6:
7:allow
8:
9:30
10:
注:InIFrameRenderingMode有三种取值,分别是prohibit、sameDomainOnly、allow 大家可以根据自己的实际需要选择对应的值
修改MV_HOME/Oracle_BI1/bifoundation/web/app/WEB-INF 目录下的web.xml
添加如下内容:
1:
2:oracle.adf.view.rich.security.FRAME_BUSTING
3:never
4:
最终如下图所示:
1:
2:
3:RelatedContent
4:/RelatedContent
5:
6:
7:
8:oracle.adf.view.rich.security.FRAME_BUSTING
9:never
10:
11:
12:
13:CLIENT-CERT
14:
15:
16:RelatedContent
17:/RelatedContent
18:
19:
20:
21:oracle.adf.view.rich.security.FRAME_BUSTING
22:never
23:
24:
25:
26:CLIENT-CERT
27:
修改完之后重启BI服务即可,如果还不行,请清除浏览器缓存。还是不行。
做了一个小测试,运行了一个站点
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
1 2 3 4New Document 5 6 7 8Hello Iframe
9 10 11
ok 页面可以正常显示,说明BIEE的界面是可以嵌入进去的。现在把问题的重点定位在ADF Project中。
其中有个配置的值:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
12 Add by Jerry 3oracle.adf.view.rich.security.FRAME_BUSTING 4samorgin 5
这个配置项同BIEE中的意义基本相同,按照文档修改为
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
12 Add by Jerry 3oracle.adf.view.rich.security.FRAME_BUSTING 4samorgin 5
再进行测试,OK ,大功告成。