【发布时间】:2020-01-06 18:09:18
【问题描述】:
我有一个沙盒 iframe,只设置了“允许脚本”,其他一切都关闭了。在沙盒 iframe 中,访问者可以运行一些自定义脚本,这就是为什么我不想设置“allow-same-origin”(不安全)。所以我决定使用“PostMessage”在父级和框架之间进行通信。
这适用于 Chrome 和 FF,但不适用于 IE。经过调查,似乎 IE 中的沙盒 iframe 完全禁用了对window.parent 的访问,这也禁用了window.parent.contentWindow.postMessage()。如果我在 iframe 上“允许同源”,它会起作用,但在我的情况下,这不是选项。
我的印象是 postMessage 是用来解决跨源问题的,它的通信方式仅限于字符串,基本上就足够了。 Chrome 和 FF 的行为似乎证实了这一点。但是 IE 关闭了沙盒 iframe(我猜也是来自其他域的 iframe),以至于连 postMessage 都无法使用。
我迷路了。我错过了什么明显的东西吗?
【问题讨论】:
标签: javascript internet-explorer