有什么办法让postMessage使用HTTPS?

Phi*_*hil 0 javascript iframe postmessage bookmarklet cross-domain

我有一个浏览器书签,可以在页面上加载iframe.然后我需要iframe能够将字符串传递回父窗口.子页面具有以下功能:

function post(m){
parent.postMessage(m,'*');
}
Run Code Online (Sandbox Code Playgroud)

只要子页面(在iframe中加载的页面)在http上,这就可以正常工作.但是当它是https时,postMessage不起作用.我无法找到任何关于此的文档或任何解决方法.

有任何想法吗?

编辑:

在FF和Chrome上都会发生这种情况(还没有尝试过IE).为了澄清:iframe加载,只是postMessage没有被执行.在HTTP页面上,一切正常.我用来接收字符串的代码如下:

function listener(event){
if ( event.origin !== "http://www.mysite.com" )
return

if (event.data=="string1"){function1();}
if (event.data=="string2"){function2();}
}

if (window.addEventListener){
addEventListener("message", listener, false)
} else {
attachEvent("onmessage", listener)
}
Run Code Online (Sandbox Code Playgroud)

DG.*_*DG. 8

我想你需要早上喝咖啡.

这是你的修复:

if ( event.origin.replace('https:', 'http:') !== 'http://www.mysite.com'  ) return;
Run Code Online (Sandbox Code Playgroud)

  • 你有没有听到外面的巨响?那是我的手掌敲击前额的声音.我想全世界都听到了......谢谢! (4认同)