如何在 iFrame 上使用 postMessage

Cod*_*cks 2 javascript iframe csrf same-origin-policy node.js

我有 2 个具有以下域的 NodeJS 应用程序:

  • 本地主机:8000
  • 本地主机:3000

在 localhost:3000 中,我有一个文本区域和一个提交按钮。

我想将文本区域的内容(使用 postMessage)发布到 localhost:8000/(some_id),并在 localhost:8000 页面上显示内容。

然后,我想在 localhost:3000 页面中显示 localhost:8000/(some_id) 的 iFrame。

我在完成这个任务时遇到了很多麻烦。我必须使用 postMessage() 以这种方式完成它。

PS:我知道最好避免使用 iFrame,但是出于我的应用程序的目的,这是有必要使用的。

sne*_*nek 15

postMessage一侧的任何内容都会发送给message另一侧的听众。

// in the parent document
iframeElement.contentWindow.postMessage('hi!');
Run Code Online (Sandbox Code Playgroud)
// in the iframe
window.addEventListener('message', ({ data }) => {
  console.log('i got some data!', data); // i got some data! hi!
});
Run Code Online (Sandbox Code Playgroud)

您也可以采用其他方式,在 iframe 源中使用并在父文档中window.parent.postMessage()监听它。window.addEventListener('message', ...)