Javascript 可能得到一个iframe';跨域的url?

Javascript 可能得到一个iframe';跨域的url?,javascript,html,iframe,Javascript,Html,Iframe,如果是跨域iframe,如何在pageload上获取iframe的当前url 背景-我正在尝试在我的网站上启用SSL。但是,我的用户需要能够通过iframe加载任何url。如果他们尝试使用http协议加载iframe,它将拒绝加载,因为父页面是https 我想自动检测iframe是否是http,如果是,则将父页面重定向到http。然而,使用我尝试过的任何方法,访问时都会出现CORS错误 以下是我的iframe: <iframe id="myframe" src='https://apple

如果是跨域iframe,如何在pageload上获取iframe的当前url

背景-我正在尝试在我的网站上启用SSL。但是,我的用户需要能够通过iframe加载任何url。如果他们尝试使用http协议加载iframe,它将拒绝加载,因为父页面是https

我想自动检测iframe是否是http,如果是,则将父页面重定向到http。然而,使用我尝试过的任何方法,访问时都会出现CORS错误

以下是我的iframe:

<iframe id="myframe" src='https://apple.com' onload="this.contentWindow.parent.postMessage(this.contentWindow.document.location.protocol, parent.document.location);" width="800" height="600">
</iframe>

我可以接收普通字符串作为消息,但我无法接收协议。我使用window.postMessage()的结果是一个CORS错误,我认为应该允许跨域通信。

不可能,出于安全原因,您无法访问其他域/主机/端口内容或iframe的src url

对-但我认为这就是
的原因。
用于-绕过CORS限制?但是如果我用任何字符串替换
.postMessage()
中的第一个参数,那么页面确实会从iframe接收消息,那么您就无法从未编写的页面(如apple.com)发送消息。所以它肯定能传递信息。。它显然无法读取文档对象。iframe能够从服务器获取http响应,因此我认为它应该有一种方法来发送一个无害的字符串,其中包含重定向到的url?我相信你是对的,但我还是会等几个小时再选择最佳答案,以防有人有一个聪明的技巧来访问你需要在iframe脚本中运行的位置,这意味着你需要苹果为ex发送消息。你可以捕捉到控制台的呼叫。。。但如果你能做到,这太可怕了!我认为编写它的控制台是来自iframe的控制台,所以您不能
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
  console.log(event.data)
}