【问题标题】:On javascript postmessage to parent HTML iframe that is on local disk在本地磁盘上的父 HTML iframe 的 javascript 消息中
【发布时间】:2011-03-28 23:53:16
【问题描述】:

我正在从事一个项目,该项目涉及在 iframe 中托管网页,而托管父 iframe 位于本地磁盘上的 HTML 文件中,例如 c:\;而内部托管的 iframe 在某个服务器上。两个网页需要互相发送消息。

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

但是当内部 iframe 需要将消息回传给父 iframe 时,它​​需要提供在本地磁盘上的父 iframe 的域。

我在内部 HTML 中尝试了以下操作以将消息发送到其位于本地磁盘上的父 IFrame:

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

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

但是当我尝试在 postmessage 中使用“file:”作为域返回父 iframe 时,我收到“Invalid argument”错误。

有人可以帮忙吗? “本地磁盘html”的域应该是什么?任何提示将不胜感激。

干杯

【问题讨论】:

  • 因为不是一个词。如果您想被认真对待,请认真对待。
  • 拥有一些代码可能会有所帮助...

标签: javascript file local postmessage


【解决方案1】:

我不知道如何指定“文件”,我猜没有办法,因为它没有多大意义。来源的目的是防止其他(可能是恶意的)页面看到您的消息,但如果来源只是硬盘上的任何文件,任何人都可以通过创建带有框架的 html 文件并从你的服务器。所以指定“文件”(即使有办法)并不比指定“*”更安全,所以只需使用“*”就可以省去麻烦了。

【讨论】:

  • "...将消息发布到文件的页面:URL 当前要求 targetOrigin 参数为“*”。file:// 不能用作安全限制;此限制可能是将来修改。” See MDN
猜你喜欢
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 1970-01-01
  • 1970-01-01
  • 2021-04-30
  • 2011-01-21
  • 2020-04-28
相关资源
最近更新 更多