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

发布于 2024-12-25 22:05:33 字数 679 浏览 0 评论 0原文

我正在尝试使用 jQuery 将自定义消息从 iframe 来宾发送到 iframe 主机(我们正在开发来宾和主机)。来宾和主机位于同一域但位于不同端口。此外,iframe 主机是从 Liferay 门户实例 (5.2.3) 内的 portlet 呈现的,并且门户会破坏 portlet 的主机 URL。主机和访客 URL 如下所示:

host: http://localhost:8080 /host/foo/bar?p_p_id=portletname_WAR_portletname_INSTANCE_nNz9&...

来宾:http://localhost:8081/guest

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

我遇到的问题是:为了使这些库正常工作,发送者(iframe guest)需要知道主机 url,但无法提前知道损坏的 portlet 主机 url。

I'm trying to send a custom message from an iframe guest to an iframe host using jQuery (We are developing both guest and host). The guest and host are on the same domain but on different ports. Also, the iframe host is being rendered from a portlet within a Liferay portal instance (5.2.3) and the portal mangles the host URL of the portlet. The host and guest URLs look like:

host: http://localhost:8080/host/foo/bar?p_p_id=portletname_WAR_portletname_INSTANCE_nNz9&...

guest: http://localhost:8081/guest

I know that trying to do this messaging violates the same origin policy enforced by browsers. To get around this I've looked at using PortHole, EasyXDM and the jquery-postmessage-plugin.

The problem I have is this: For these libraries to work the sender (iframe guest) needs to know the host url but cannot know the mangled portlet host url in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

水晶透心 2025-01-01 22:05:33

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

The mozilla docs are very good on the subject: https://developer.mozilla.org/en/DOM/window.postMessage

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文