关于javascript postmessage到本地磁盘上的父HTML iframe

chr*_*980 3 javascript postmessage file local

我正在开发一个涉及在iframe中托管网页的项目,而托管父iframe位于本地磁盘上的HTML文件中,比如c:\; 而内部托管的iframe在某些服务器上.这两个网页需要彼此进行邮寄消息.

父内容iframe(在本地磁盘上)将消息发送到内部框架没有问题,因为它知道内部iframe的域;

但是当内部iframe需要postmessage回到父iframe时,它需要提供本地磁盘上的父iframe的域.

我在内部HTML中尝试了以下内容,将postmessage邮寄到其父IFrame,该IFrame位于本地磁盘上:

*var messageToSend = {
                        jsonrpc: "2.0",
                        result: [result]
                    };
window.parent.postMessage(JSON.stringify(messageToSend), "file://");*
Run Code Online (Sandbox Code Playgroud)

// window.parent IFrame是本地磁盘上的HTML文件

但是当我尝试使用"file:"作为postmessage中的域回到父iframe时,我收到一个"无效参数"错误.

有人可以帮忙吗?"本地磁盘html"的域应该是什么?任何提示将受到高度赞赏.

干杯

小智 5

我不知道如何指定"文件",我猜测没有办法,因为它没有多大意义.原点的目的是防止其他(可能是恶意的)页面看到您的消息,但如果原点只是硬盘上的任何文件,任何人都可以通过创建带有框架的html文件并从中加载您的网页来查看它你的服务器.所以指定"文件"(即使有一种方法)并不比指定"*"更安全,所以只需使用"*"并省去头痛.

  • “...将消息发布到 file: URL 的页面当前要求 targetOrigin 参数为“*”。file:// 不能用作安全限制;此限制将来可能会被修改。” [参见 MDN](https://developer.mozilla.org/en-US/docs/DOM/window.postMessage) (2认同)