为什么这个postMessage / receiveMessage不起作用?

时间:2013-10-02 17:34:58

标签: javascript iframe cross-domain

我正在尝试使用postMessage / receiveMessage通过iframe访问跨域请求的响应。

iframe调用通常执行特定操作的资源,但是当出现错误时,它会使用调用postMessage的脚本片段进行响应。

这是在开发环境中工作但在生产中它失败了,我想它与HTTPS有关,但不知道如何解决它。

响应代码如下所示:

<script>
$.postMessage(whateverData, 'https://abc.def.com', parent );
</script>

客户端上的接收消息如下所示:

$.receiveMessage(function(e){       
            alert(e.data);
        }, 'http://blah123');

我在控制台(Chrome浏览器)中看到的错误如下所示:(显示HTTP请求网址)

The page at https://abc.def.com/xyz/something.html#jkl displayed insecure content from http://blah123/sub/qwerty/target.aspx?parmsRemoved
Uncaught SyntaxError: Unexpected token ILLEGAL 

这里出了什么问题?怎么解决?

编辑:嗯,第一个控制台消息是否有可能产生误导 - 这与安全性无关,但错误是解析我的'whateverData'var中的文本时遇到问题?

1 个答案:

答案 0 :(得分:0)

这是两个分开的问题。

对于post / receiveMessage,根据协议(file://https://http://),它们在不同浏览器中的限制略有不同,所以请注意这一点。