我有 2 个 Angular 应用程序。我想将数据从一个应用程序传递到在不同域上运行的另一个应用程序。我尝试使用window.postMessage,但是,我在第二个应用程序中没有获得任何数据。
第一个应用程序具有以下代码
const w = window.open('http://192.168.5.134:1210/', '');
w.postMessage('Hello Message!', 'http://localhost:4200');
第二个应用程序具有以下代码
window.addEventListener("message", receiveMessage, false);
function receiveMessage(event) {
alert(event.origin);
if (event.origin !== "http://localhost:4200") {
return;
}
alert(event.data.data);
}
由于安全原因,两个不同的域无法相互通信。
这适用于postMessage
、localStorage
或与您的浏览器相关的任何内容。
唯一合适的选择是让他们与第三方通信,让它成为独立的客户端、API 或任何其他与浏览器本身无关的东西。
你也许可以使用Iframe,但我不确定,我什至不知道该怎么做。
如果您有 2 个应用程序在不同的域上运行,这意味着相互通信的最佳方法是设置允许此类通信的 API。因此,您需要一个处理 API 的后端。