我们有 2 个 Web 应用程序,它们在 2 个不同的框架(A 和 B)中显示信息。 A 中的 JavaScript 读取 B 的隐藏字段,并根据隐藏字段的值采取一些操作。另外,A 负责加载 B 的第一页,B 可以有多个页面,A 的命令可以在 B 的任何页面中,B a 的页面是根据 B 的当前状态动态构造的 当 A 和 B 来自同一域时,一切正常。 但在某些情况下(应用程序的性能和架构),我们需要 A 和 B 来自 2 个不同的域,在这种情况下,跨域限制不允许 A 读取 B 隐藏字段。我尝试使用 Access-Control-Allow-Origin 但它在浏览器中已加载的 2 个帧之间不起作用。 尽管您可能认为此类应用程序可能会引发安全问题,但这些应用程序设计为在 Intranet 上运行。
有人有解决问题的想法吗
弗兰克
最佳答案
如果您在同一窗口内有来自不同域的多个 iframe,您应该使用 postMessage API它允许在 iframe 之间发送消息(无论来源如何)。但是,您必须更改两个 iframe 中的代码才能使 postMessage 正常工作。
基本上,A 不会读取 B 的字段,而是会向 B 发送一条消息,告知它想要读取其字段,然后 B 会向 A 发送另一条消息,其中包含这些字段中的数据。
您还可以尝试使用一些基于 postmessage 的更高级的库,例如 jsChannel和 pmrpc这使您能够以更自然的方式(远程过程调用)在 iframe 之间进行通信,而不是发送消息。
关于javascript - 跨域帧通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864836/