您的位置:首页 > 运维架构 > Nginx

页面跨域传参 nginx iframe

2016-04-01 17:14 405 查看

设定TT和KB为不同的域

1、TT set-ticket-type.html页面div中装iframe(指向KB页面 documentDisplay.jsp)     <div id ="tt-type-kb" style="display:none">           <iframe   name ="tt-type-kb-display" src= "/CS/cs/kb/query/documentDisplay.jsp?multiselect=true&crossPage=true&PERMIT_CHANNEL=2&routeSrc=troubleticket" width ="100%" height= "500px">           </iframe >     </div >       $.openPopupDiv('tt-type-kb','Knowledge Base','1024','545',        { "onConfirm": "ticketType.closePopupDivForKBPage()","draggable" :true,"resizable" :true});   2、nginx配置反向代理      #设置知识库的菜单代理         location /CS {            #设置主机头和客户端真实地址,以便服务器获取客户端真实IP            proxy_set_header Host $Host;            proxy_set_header X-Real-IP $remote_addr;            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;            #禁用缓存            proxy_buffering off;            #设置反向代理的地址            proxy_pass http://xxxx.xxxx.xxx.xx:0000/CS;                                                                                               }      只有配置反向代理,tt才能访问kb页面的方法:      window.frames["tt-type-kb-display"].submitSelected();      submitSelected()为kb的方法,包含下面的逻辑(获取数据,传参)   3、KB页面操作结束时创建一个Iframe,指向TT的页面,将数据作为参数发送到TT页面kbCallback.html        var list = new Array();      var obj = new Object();      obj.documentId = docTable.getValue(rows[i], "DOCUMENT_ID");      obj.documentName = docTable.getValue(rows[i], "DOCUMENT_NAME");      list.push(obj);      var ff = document.createElement( "iframe");      ff.style.visable = "hidden";      ff.style.display= 'none';      ff.src= "/ARIESRES/crm-bj/trouble-ticket/ticket-type/kbCallback.html?kbId=" +JSON.stringify(list);      document.body.appendChild(ff);   4、在kbCallback.html页面获取KB传过来的值,再传给set-ticket-type.js <!DOCTYPE html>//文档头,在ie8需要强制使用标准渲染模式才能使用json <html><body ></body ></html> <script>       window.onload = function (){              var url = location.search;              var str = "";              if (url.indexOf( "?") != -1) {                   str = url.substr(url.indexOf( "=")+1);                   str = decodeURIComponent(str);             }              var param = JSON.parse(str);             parent.parent.ticketType.doAfterActionForKBPage(param);       } </script>   注意1: kbCallback.html的parent是documentDisplay.jsp,documentDisplay.jsp的parent是set-ticket-type.html,所以用parent.parent.function 注意2:kbCallback.html是个空页面,作为桥梁使用          
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: