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

时间:2018-12-05 23:56:47

标签: javascript html iframe postmessage

基本上我有一个跨域iframe,并且无法启用allow-scripts标志,但与此同时,我需要获取iframe文档中<script>标记中的postMessage或访问iframe contentDocument。

我尝试过:

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

但是使用沙盒标志,我只会得到null的回报。

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

  • 将事件监听器添加到包含iframe contentDocument的标签中
  • 获取同样位于iframe contentDocument内的attr值
  • 一种从原始页面发送JSON并使用iframe(postMessage)在页面中获取此JSON的方法

但是所有这一切都没有allow-scripts标志,这是我想要归档的吗?

2 个答案:

答案 0 :(得分:0)

要引用部分问题,

  

我需要获取iframe文档中<script>标签中的postMessage

如果您表示需要 put inject 一个包含postMessaging的<script>标签,那么恐怕是不可能的,因为{{ 3}}会阻止它。

但是,如果您要尝试获得访问或收听从交叉链接中的<script>标签广播的same-origin policy原先的iframe,然后是,这正是postMessage旨在实现的目标。前提是您的消息事件侦听器托管在postMessage的targetOrigin参数中定义的来源上。

PostMessage本质上是一种信任契约,可以克服跨域障碍。通过拥有...

  • 访问和许可创作iframe的内容
  • 被托管在定义的targetOrigin推荐)上,或者被放置在任何来源(如果{{ 1}}具有通配符“ *”值(不推荐

postMessage

答案 1 :(得分:0)

简单的答案是

具有其sandbox属性的