润乾——润乾报表跨域问题解决方案
来源:互联网 发布:屏幕检测软件 编辑:程序博客网 时间:2024/05/16 14:08
润乾报表跨域问题解决方案
跨域访问报表,可以理解为在两台不同IP段的机器上访问报表。
先简单介绍一下跨域的具体情况:
A, B两台机器,分别部署了两个应用。
A机器的IP:192.168.0.41 域名:runqian1.vicp.net
B机器的IP:192.168.0.50 域名:runqian5.vicp.net
A机器上部署了报表应用,是服务端;B机器是客户端。
在B应用的web.xml中有如下配置:
<context-param>
<param-name>reportPath</param-name>
<param-value>http://192.168.0.41:8081/demozj</param-value>
</context-param>
然后在B机器的iframe.jsp中通过iframe引入了B机器应用中的kuayu.jsp,在kuayu.jsp中通过window.location="<%=reportPath%>/reportJsp/showReport.jsp?raq=/testxlrl.raq";去访问A机器上应用中的报表
(JSP中的具体内容可见附件)
在B机器的IE地址栏中输入:
Http://192.168.0.50:8080/demo/reportJsp/iframe.jsp
应用会跳转到:
http://192.168.0.41:8081/demozj/reportJsp/showReport.jsp?raq=/testxlrl.raq
Testxlrl.raq是个带参数模版的报表,其中有下拉数据集,下拉列表框和下拉日历。而在跨域访问报表时,所表现出来的具体问题是:下拉框和下拉日历一律不能点击,点击时无任何反应,且页面报脚本错误,提示:servlet拒绝访问。
出现这个错误的原因是:报表的下拉控件中用到一个名为creatPopup()的js方法,该方法本书是拒绝跨域访问的。
js跨域问题,是在一个域下的页面中通过js访问另一个不同域下的数据对象,出于安全性考虑,几乎所有浏览器都不允许这种跨域访问。
这并非是报表产品的问题。
但是对于这种情况,报表目前有一种解决办法:使用document.domain=“二级域名”的方式。
使用document.domain方法有以下几个前提:
1. 在web.xml中只能配置域名和端口。
即将:
<context-param>
<param-name>reportPath</param-name>
<param-value>http://192.168.0.1:8081/demozj</param-value>
</context-param>
修改成:
<context-param>
<param-name>reportPath</param-name>
<param-value>http://runqian1.vicp.net:8081/demozj</param-value>
</context-param>
2.只能使用域名访问应用。
3.二级域名必须一致。
以上三个条件必须同时遵守,且不能违反任意一条。
具体步骤如下:
1. 统一两台服务器的二级域名(www.1.baidu.com 中baidu.com就是二级域名)
a) A,B两天机器的二级域名都是:vicp.net
2. 在涉及到的所有JSP中加入一下代码:
<scripttype="text/javascript">
document.domain="vicp.net";
</script>
该例中就需要在iframe.jsp,kuayu.jsp和A机器上的showReport.jsp中都加入这句话。
3. 使用域名加端口的方式来访问应用,如:
http://runqian5.vicp.net:8080/demo/reportJsp/iframe.jsp
说明一点:
配置的端口可以不一致,但是前提是:在路由器配置端口转发的地方必须将用到的端口都包含进去。
如下图:
- 润乾——润乾报表跨域问题解决方案
- 润乾报表设计器——预览报表问题解决
- 报表打印问题解决方案
- 跨域问题解决方案
- 跨域问题解决方案
- 跨域问题解决方案
- 跨域问题解决方案
- 润乾报表在linux系统下字体显示问题解决方案
- 水晶报表部署以及相关问题解决方案
- JasperServer导出PDF报表中文问题解决方案
- JS跨域问题解决方案
- Ajax跨域问题解决方案
- Ajax跨域问题解决方案
- webview跨域问题解决方案
- nodejs跨域问题解决方案
- ajax跨域问题解决方案
- js 跨域问题解决方案
- ajax跨域问题解决方案
- 深入研究Clang(六) Clang Lexer代码阅读笔记之Preprocesser
- Java初学习 - Java中的异常[Exception]public class NeverCaught { static void f() throws ExceptionB{
- 使用pt-heartbeat监控主从复制延迟
- 从一家电子商务网站学到的经验教训
- 爱立信与微软联合开发移动电话
- 润乾——润乾报表跨域问题解决方案
- 截成圆角矩阵图片
- Bug追踪的五个原则
- 第11周项目 7 泰勒??太乐
- ffmpeg常用参数一览表
- 质量管理失败的10大原因
- 五种常见的电子商务模式对比:B2B、B2C、C2B、C2C、O2O
- ubuntu 下 codeblocks 的使用 各种技巧
- 【DP】HDU-1300 Pearls