【问题标题】:cross domain access in iframe from parent to childiframe中从父到子的跨域访问
【发布时间】:2010-12-09 07:18:32
【问题描述】:

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

【问题讨论】:

    标签: javascript html iframe cross-domain


    【解决方案1】:

    好的,我刚刚扩展了我的子对父跨域库以支持父对子通信。它要求您可以从孩子与父母交流。

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

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

    1. 子节点必须托管自己的跨域文件(我称之为 xdChild)
    2. 当子 iframe 加载时,它会在 iframe 中加载 xdParent
    3. xdParent 然后将其窗口对象注册到父级(即 parent.parent.someReservedVariable = window;)
    4. 当父母想对孩子做某事时,父母使用 someReservedVariable 在 xdParent 中加载 xdChild
    5. xdChild 然后对子页面做一些事情(即 parent.parent.doWhateverItWantsTo)

    希望这是可以理解的。不幸的是,我不想花时间为你创建一个简洁的例子,但如果你有任何问题,请告诉我。

    【讨论】:

    • 这是最好的答案!我花了 3 天的时间试图让一些东西工作,所有的死胡同,然后我从你那里找到了这个,该死的,它就像一个冠军。荣誉,你让我免于放弃!
    • 这不再有效。我会省去你们其他人的麻烦。天才的解决方案!
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      不要那样做。

      这不是一个好主意。

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 2010-10-16
          • 2012-04-05
          • 1970-01-01
          • 2010-11-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-12
          相关资源
          最近更新 更多