在IFRAME下跨域单点登入无法回调成功(localhost可以,但换成其他ip地址就不行)

在一个有ID为myiframe的页面,相应的JS为:

        function ($scope) {
            var username = abp.session.userId; //获取输入的用户名
            var scr = document.createElement("iframe");      //创建iframe
            var iframe = document.getElementById("myiframe");      //获取当前页面的iframe
            scr.src = "http://localhost:8075/webroot/decision/login/cross/domain?fine_username=" + username + "&fine_password=123456&validity=" + -1 + "&callback=callback";   //将报表验证用户名密码的地址指向此iframe
            alert(scr.src)
            if (scr.attachEvent) {       //判断是否为ie浏览器
                scr.attachEvent("onload", function () {                    //如果为ie浏览器则页面加载完成后立即执行
                    iframe.src = "http://localhost:8075/webroot/decision/view/report?viewlet=NBJSf%252FFGS%252FNBJSf.cpt"
                });
            } else {
                scr.onload = function () {              //其他浏览器则重新加载onload事件
                    iframe.src = "http://localhost:8075/webroot/decision/view/report?viewlet=NBJSf%252FFGS%252FNBJSf.cpt"
                };
            }
            document.getElementsByTagName("head")[0].appendChild(scr);   //将iframe标签嵌入到head中

在报表为常用用户函数的报表下image.png

调用成功之后为

image.png

image.png

然后将JS的地址改为服务器地址之后就不行了,

把js中的localhost改成本地IP地址也不行,

image.png

image.png

image.png

image.png

FineReport q328736355 发布于 2020-12-21 10:51
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
snrtuemcLv8专家互助
发布于2020-12-21 10:54

应该是js跨域问题,参考

JS 跨域解决方案-https://help.fanruan.com/finereport/doc-view-855.html


  • 3关注人数
  • 662浏览人数
  • 最后回答于:2020-12-21 10:54
    请选择关闭问题的原因
    确定 取消
    返回顶部