javascript - 跨域帧通信

标签 javascript html cross-domain

我们有 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 的更高级的库,例如 jsChannelpmrpc这使您能够以更自然的方式(远程过程调用)在 iframe 之间进行通信,而不是发送消息。

关于javascript - 跨域帧通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13864836/

相关文章:

java - 如何使用struts2-dojo-plugin实现自动完成下拉菜单

javascript - 为什么 jQuery 中的 every 不迭代列表中的所有值

javascript - 展开和折叠 div

javascript - jQuery div 可点击并跟随子 URL

javascript - 从浏览器扩展调用网页 JavaScript 方法

javascript - 如何处理 backbone.js 中的关系

javascript - 对不同 URL 的 AJAX GET 请求将原始 URL 附加到 GET 查询

jquery - Window.scroll 在 iframe 中

javascript - Express 服务器启用了 CORS,但在从 Angular 执行 aync HTTP 请求时仍然失败

node.js - VueJS - 用于构建的 vue.config.js 代理配置