【问题标题】:Cross domain Frame communication跨域帧通信
【发布时间】:2012-12-14 15:41:22
【问题描述】:

我们有 2 个 Web 应用程序,它们在 2 个不同的框架(A 和 B)中显示信息。 A 中的 javascript 读取 B 的隐藏字段并根据隐藏字段的值采取一些行动。 A还负责加载B的第一页,B可以有​​多个页面,A的命令可以在B的任何页面中,B的页面是根据B的当前状态动态构建的 当 A 和 B 来自同一个域时,一切正常。 但是在某些情况下(应用程序的性能和架构),我们需要让 A 和 B 来自 2 个不同的域,在这种情况下,跨域限制不允许 A 读取 B 隐藏字段。我尝试使用 Access-Control-Allow-Origin 但它在浏览器中已加载的 2 个框架之间不起作用。 尽管您可以认为此类应用程序可能会引发安全问题,但这些应用程序旨在运行在 Intranet 上。

有人有解决问题的想法吗

弗兰克

【问题讨论】:

  • 没有 100% 的解决方案,但是...使用域 A 中的两个 iframe 一个发布,另一个显示可以解决这个问题。还使用脚本标签来克服跨域。

标签: javascript html cross-domain


【解决方案1】:

如果您在同一窗口中有来自不同域的多个 iframe,您应该使用postMessage API,它可以在 iframe 之间发送消息(无论来源如何)。但是,您必须更改两个 iframe 中的代码才能使 postMessage 正常工作。

基本上,A 不会读取 B 的字段,而是向 B 发送一条消息,告诉它它想要读取它的字段,然后 B 会向 A 发送另一条消息,其中包含这些字段中的数据。

您还可以尝试使用一些基于 postmessage 的更高级的库,例如 jsChannelpmrpc,它们使您能够以更自然的方式(远程过程调用)在 iframe 之间进行通信,而不是发送消息。

【讨论】:

    猜你喜欢
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多