`
123003473
  • 浏览: 1043414 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

关于JS跨域访问的简解

阅读更多
Javascript出于安全性考虑,不允许跨域调用其他页面的对象。
最近在项目中也遇到了这个问题,存在于多应用系统之间JS的调用时。
问题是在平台系统(A系统)主页面上包含了一个展现业务系统(B系统)的待办列表的JSP,而当点击其中的连接的时候,是要在A的主页面上调用JS方法打开一个标签页,标签页中载入B业务平台,但两个系统不在同一个域,所以就出现无法访问的情况。
我们的解决方案是,先在A系统写一个JSP文件,内容很简单,onload调用top.XXX(XX,XX),xxx是A系统主页面上打开标签页的JS方法。
然后在需要放到A的主页面的B系统的待办列表JSP页面里,写一个js方法,如下:
function a()
{
var iframe =  createElement("iframe");
iframe.src = "xxx.jsp" //此路径是刚才A系统写的那个JSP
body.appendChild(iframe);
}
然后在超连接上触发这个方法,就可以实现跨域访问A系统的JS方法了。
因为在B的JSP上新建的这个IFRAME与A系统是在同一个域的,所以可以直接top.XXX()来调用顶父窗体的方法。

就像下图,B新建了与A同域的C访问A的方法,B可以通过URL传递给C参数,C然后通过调用A方法时把参数传递过去,这就实现了比较简洁的跨域访问。
-----------------------
|  |---------------|     |A
|  | |---------| C |B   |
|  | |---------|     |     |
|  |---------------|     |
-----------------------
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics