我们有两个web应用程序,它们在两个不同的框架(A&B)中显示信息。A中的javascript读取B的隐藏字段,并根据隐藏字段的值采取一些操作。此外,A负责加载B的第一个页面,B可以有多个页面,A的命令可以在B的任何页面中。B的页面是根据B的当前状态动态构建的当A和B来自同一个域时,一切都很好。但在某些情况下(应用程序的性能和架构),我们需要A和B来自2个不同的域,在这种情况下,跨域限制不允许A读取B隐藏字段。我尝试使用Access Control Allow Origin,但它在浏览器中已加载的两个帧之间无法接合。尽管您可能认为这是一个安全问题,但这类应用程序可能会引发安全问题,这些应用程序是为在intranet上运行而设计的。
有人有解决问题的想法吗
Frank
在同一窗口中有来自不同域的多个iframe的情况下,您应该使用postMessage API,它可以在iframe之间发送消息(无论来源如何)。但是,您必须更改两个iframe中的代码才能使postMessage正常工作。
基本上,A不会读取B的字段,而是会向B发送一条消息,告诉它想读取自己的字段,然后B会将另一条消息发送回A,其中包含这些字段中的数据。
您还可以尝试使用一些基于postmessage的更高级的库,如jsChannel和pmrpc,它们使您能够以更自然的方式(远程过程调用)在iframe之间进行通信,而不是发送消息。