报表服务转发如何支持二维码图片?
将查询到的某一个单元格的字符串,作为另外一个单元格生成二维码的内容,界面可以正常显示二维码
但是目前需要做转发处理,A、B 两台服务器,客户端能访问 B,访问 A 受限,但是润乾部署在 A,需要 B 做转发。此时客户端根据 url 通过 B 访问润乾报表,能够获取到报表信息,包括表格以及查询数据,但是二维码不能正常显示。
请问应该如何处理才能获取到正常的二维码显示?
两个访问地址,只有前面的 ip:port 不一样,后边的路径和参数都一样
xxx.xxx.xxx.xxx:xxxx/demo/reportJsp/preview.jsp?_rpx=……
下图为正常在可访问 A 的客户端调用显示的
下图为客户端通过 B 访问 A 调用显示的
那个二维码 会变成一个图片,然后报表展示时加载的是一个 url,类似这样:http://localhost:6868/demo/reportServlet?action=9&graphId=100001&time=1700100460902 ,是通过一个 reportServlet 来处理的,看下你们那边转发时是否有一些安全设置,拦截了 servlet,看下是否能放开。
另外的话,这个图片也会生成到缓存目录下,找到缓存目录,一般是 应用下的 cache report,看下下边是否有个 raqpic+ 一串数字的文件,那个就是那个图片,你看下那个是否生成了,数字具体是什么可以查看报表展示时的页面源文件,里边能看到,然后把那个文件改个后缀,比如 jpg,看下是否是那个二维码图片,如果是的话,那多半还是转发时有些安全设置,导致了 reportservlet 加载问题
刚刚检查了下,生成出来的图片 端口是部署的 8080 端口,IP 变成了转发前的 IP,所以导致访问不了。这个端口怎么可以自定义?
实际部署的是 1.1.1.2:8080
未经过转发的图片地址:1.1.1.2:8080
我们设置了由 1.1.1.1:9000 转发到 1.1.1.2:8080,
报表是正常打开了,但是里面的各种 js 地址、图片地址都是 1.1.1.1:80
检查了下,不是安全机制的问题,是生成 url 的问题
在 WEB-INF 下有个 raqsoftConfig.xml 文件,在这里边的下半部分增加一个配置 <propertyname=“appUrlPrefix"value=”/APPMAP"/>
value 值先用这个 /APPMAP 试下,更改后要重启应用,不行的话,这块改成 对应的 url,一般是 http://ip:port/ 应用名 这样,然后看下效果
对了,查看页面源文件后,里边能看到各种资源的引用,如果资源上带 servlet 的,一般 可以通过这个 appUrlPrefix 控制,如果是普通的资源,那个一般就是走的转发规则的设置
非常感谢,已经可以了