将自定义消息从iframe来宾发送到iframe主机,其中托管portlet中的HTML

Send custom message from iframe guest to iframe host where host HTML from portlet

本文关键字:iframe portlet HTML 中的 自定义消息 主机      更新时间:2023-09-26

我正在尝试使用jQuery将自定义消息从iframe来宾发送到iframe主机(我们正在开发来宾和主机)。来宾和主机位于同一个域上,但位于不同的端口上。此外,iframe主机是从Liferay门户实例(5.2.3)中的portlet呈现的,该门户破坏了portlet的主机URL。主机和访客URL看起来像:

主机:http://localhost:8080/host/foo/bar?p_p_id=portletname_WAR_portletname_INSTANCE_nNz9&。。。

客人:http://localhost:8081/guest

我知道尝试发送这种消息违反了浏览器强制执行的同源策略。为了解决这个问题,我研究了使用PortHole、EasyXDM和jquery postmessage插件。

我遇到的问题是:为了让这些库发挥作用,发送方(iframe-guest)需要知道主机url,但不能提前知道损坏的portlet主机url。

mozilla文档在这个主题上做得很好:https://developer.mozilla.org/en/DOM/window.postMessage