是否可以在没有 "allow-scripts" 标志的情况下将 postMessage 发送到沙盒 iframe?

Is it possible to send a postMessage to a sandboxed iframe WITHOUT the "allow-scripts" flag?

基本上我有一个跨域的 iframe 并且无法启用允许脚本标志,但同时我需要在 iframe 文档中获取 <script> 标记中的 postMessage 或访问iframe 内容文档。

我试过:

let iframeElement = document.getElementsByTagName('iframe')[0];
let iframeContent = iframeElement.contentDocument
console.log(iframeContent)

但是使用沙箱标志我只得到 null return.

我需要做的是以下三个选项之一:

但是所有这些都没有允许脚本标志,这就是我想要实现的目标吗?

引用你的部分问题,

I need to get the postMessage that is in a <script> tag in the iframe document

如果您的意思是您需要 putinject 包含 postMessaging 的 <script> 标签,那么我恐怕这是不可能的,因为 same-origin policy 会阻止它。

但是,如果您正在尝试获取访问或收听来自[=的postMessage广播10=] 跨源 iframe 中的标记,然后是的,这正是 postMessage 旨在实现的目的。前提是您的消息事件侦听器托管在 postMessage 的 targetOrigin 参数中定义的源上。

PostMessage本质上是一种信任契约,用来克服跨域障碍;通过...

  • 访问和许可创作 iframe 的内容
  • 被委托 收听 通过托管在 targetOrigin 定义的(推荐)或由如果 targetOrigin 具有通配符“*”值(不推荐
  • ,则在任何来源

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage#Security_concerns

简单的答案是

具有限制脚本使用的 sandbox 属性的