我有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);
}
答案 0 :(得分:1)
由于安全原因,两个不同的域无法相互通信。
适用于postMessage
,localStorage
或与您的浏览器相关的任何内容。
唯一合适的选择是使它们与第三方通信,使其成为独立的客户端,API或与浏览器本身无关的任何其他东西。
您也许可以使用iframe,但是我不确定,甚至不知道该怎么做。
答案 1 :(得分:0)
如果您有2个在不同域上运行的应用程序,则意味着相互通信的最佳方法是设置一个允许此类通信的api。因此,您需要一个可以处理api的后端。