使用postMessage进行跨域消息传递

时间:2014-09-02 13:27:52

标签: javascript html http iframe postmessage

我有一个要求,我需要在iframe中打开一个html页面,而iframe又放在另一个html页面中(uri以file://开头,用于此页面)。 iframe和外部html页面之间需要有跨域消息传递。 iframe中的页面是从本地计算机加载的(iframe中的外部页面和页面都有file:// uri),它工作得很好。

现在,如果我尝试创建一个应用程序,将其托管在我的本地计算机中并在iframe中打开它,尽管页面成功加载,但外框和iframe中的页面之间的消息传递失败。

我在Chrome中收到以下错误: -

Uncaught SecurityError: Blocked a frame with origin "http://localhost/newapp" 
from accessing a frame with origin "null".  The frame requesting access has a protocol of 
"http", the frame being accessed has a protocol of "file". Protocols must match.

我已经在托管应用程序的服务器上允许跨源请求。我可以采取哪些其他步骤使postMessage通信成为可能?

1 个答案:

答案 0 :(得分:1)

错误消息很明确:您没有使用相同的协议。一个是使用HTTP而另一个是使用文件。

作为Chrome的安全选择,您需要在HTTP或文件协议下提供服务。