我可以在重定向的iframe上使用parent.postMessage吗?

时间:2018-03-13 00:19:45

标签: javascript iframe

我想使用window.parent.postMessage函数,但是,我希望它用于重定向的iframe。这是场景:

我们的浏览器位于http://mytestsite.com并且其内部有一个iframe,最初设置为http://othersite.com

更准确,iframe设置为http://othersite.com?redirect-url=http://mytestsite.com

(重定向网站网址除了HTML编码)

会发生什么,有些东西在othersite.com上完成,然后othersite.com最终将自己重定向到mytestsite.com。当发生这种情况时,我想我能做到这一点:

window.parent.postMessage({
    'someData': 'whatever'
}, window.location.ancestorOrigins[0]);

然后在父母身上:

window.addEventListener('message', (e) => {
  console.log('do something with: ', e);
});

然而,这似乎不起作用。

1 个答案:

答案 0 :(得分:0)

事实证明,我并不完全了解情况。在我的问题中,我简化了问题,但在现实生活中,这就是我所拥有的。

主浏览器窗口:http://10.1.20.61:4200/console/payments

注意:这是一个Angular 5应用程序。此处列出的IP地址是此处工作的网络上我的计算机的本地IP。

重定向iframe:http://localhost:4200/cc-auth-process

我必须在这里解决两个问题。我注意到的第一件事就是当我去构建这个构建时爆炸,因为它说window.location没有ancestorOrigins的属性。我仍然不知道为什么会爆炸,因为至少在我的情况下(在Chrome浏览器中)window.location确实有一个ancestorOrigins属性,这是一个URL数组。

无论如何看着这个让我意识到父母实际上是一个与iframe不同的域。为了解决这个问题,我添加了一个环境变量并改为使用它,这反过来允许postMessage传播到父级。