qq525566534 发表于 2023-7-10 08:54:23

【ARJS】open报表提示跨域怎么办

最早打开的报表都是本项目内的没问题,这样viewer.open('/rps/rpt1.rdlx-json')

但现在项目把所有报表放到一个专门的项目里了,报表地址也就跟着变成了外部用ip访问的了,open('http://111.116.251.118:8032/Arjs/a5/a5e67d9c-92bf-43f9-9faf-e9178e49fcff.rdlx-json')就提示跨域了怎么办呢

Felix.Li 发表于 2023-7-10 08:54:24

您可以参考上面回答的,或者直接让子报表可以按照这个配置请求到
比如你的主报表访问地址是;
http://localhost:8080/1.rdlx-json

子报表配置的是/report/2.rdlx-json

实际访问地址就是http://localhost:8080/report/2.rdlx-json

Bella.Yuan 发表于 2023-7-10 15:10:18

您好,可以参考一下这个教程:https://gcdn.grapecity.com.cn/showtopic-94825-1-1.html

qq525566534 发表于 2023-7-10 16:45:24

本帖最后由 qq525566534 于 2023-7-10 17:51 编辑

Bella.Yuan 发表于 2023-7-10 15:10
您好,可以参考一下这个教程:https://gcdn.grapecity.com.cn/showtopic-94825-1-1.html

这个子报表节点里面只能套子报表的地址吗,不能直接是子报表的json吗?我之前设计了多个报表了,现在我想套到一个空报表里,这样就不用再设计了

Felix.Li 发表于 2023-7-10 17:50:19

qq525566534 发表于 2023-7-10 16:45
var js={"Name":"Report","Width":"21cm","Layers":[{"Name":"default"}],"CustomProperties":[{"Name":" ...

我这边尝试复现;

出现的唯一问题是找不到子报表
我把子报表删除后,可以正常打开


如果咱们这边需要加载子报表:
viewer.open(js, {
    ResourceLocator: {
      getResource: (resourceId) => {
      var reportUrl;
      switch (resourceId) {
          case "/_Tmp_Rpts/20230710/Onea314d3ce-06c6-49f8-a5bc-2478f48bfeba.rdlx-json":
            reportUrl = "reports/VehicleDetails.rdlx-json";
            break;
          default:
            reportUrl = null;
            break;
      }
      if (reportUrl)
          return "";
      },
    },
});最终需要返回子报表的报表json。就可以正常获取了

qq525566534 发表于 2023-7-10 17:52:40

Felix.Li 发表于 2023-7-10 17:50
我这边尝试复现;

出现的唯一问题是找不到子报表



这个子报表节点里面只能套子报表的地址吗,不能直接是子报表的json吗?我之前设计了多个报表了,现在我想套到一个空报表里,这样就不用再设计了

Leo 发表于 2024-2-23 14:22:04

基于浏览器安全策略,跨域的JSON无法被直接使用。这样就面临两种选择,要么部署的时候不要跨域,要么采用一种古老的叫做JSONP的技术。参见:https://stackoverflow.com/questions/2067472/what-is-jsonp-and-why-was-it-created
页: [1]
查看完整版本: 【ARJS】open报表提示跨域怎么办