iframe中从父级到子级的跨域访问

时间:2010-03-09 06:44:03

标签: javascript html iframe cross-domain

有人可以帮我解决这个问题 - 我有2个应用程序AAA和BBB。 AAA的主页包含显示应用程序BBB的iFrame。当我登录AAA时,应该使用相同的登录详细信息登录BBB(单点登录)和AAA主页的页面加载,BBB的主页也应该加载到iFrame中。 我尝试使用javascript访问BBB登录页面的表单元素,输入登录数据并提交。但浏览器给我一个'访问被拒绝'错误。我做了一点阅读,并发现浏览器不允许跨域通信。 有人能告诉我如何实现这个目标吗?

4 个答案:

答案 0 :(得分:2)

好的,我只是扩展了我的子到父跨域域库,以支持父母到子的通信。它要求您可以从孩子到父母进行沟通。

我正在进行的子到父通信使用由父(我称之为xdParent)托管的跨域文件,该文件加载在子内部的iframe中。然后,此页面(xdParent)调用parent.parent.whateverItWantsTo

所以为了与较低的iframe沟通,我正在这样做:

  1. Child必须拥有自己的跨域文件(我将其命名为xdChild)
  2. 当子iframe加载时,它会在iframe中加载xdParent
  3. xdParent然后将其窗口对象注册到父对象(即parent.parent.someReservedVariable = window;)
  4. 当父母想要对孩子做某事时,父母使用someReservedVariable在xdParent中加载xdChild
  5. xdChild然后对子页面执行某些操作(即parent.parent.doWhateverItWantsTo)
  6. 希望这是可以理解的。不幸的是,我不想花时间为你创建一个简洁的例子,但如果你有任何问题,请告诉我。

答案 1 :(得分:1)

我认为我的回答here可能会有所帮助。

HTML5 supports messaging但HTML5目前仅支持有限的浏览器支持。

答案 2 :(得分:1)

不要那样做。

这不是一个好主意。

当他们修复涉及跨域iframe的另一个安全漏洞时,您可能会受损。

答案 3 :(得分:0)

您可以使用JSONP绕过跨域限制。有一个很好的解释over here

我多次使用JSONP跨域使用JavaScript。