不同端口上不同应用的跨域消息传递

时间:2016-09-20 05:20:12

标签: javascript

我正在尝试使用postMessage()将消息从一个应用程序发送到另一个应用程序。 我的一个应用程序是在端口9080的自由服务器上,另一个在端口8080的tomcat上。 当我尝试使用相同的应用程序,我可以发布消息,但在同一服务器或不同的服务器上使用不同的应用程序,它不起作用。窗口正在打开,但内容不会显示。

以下是我的档案 -

1)家长应用程序(我发送内容的应用程序)

<script type="text/javascript">
 function Menu() {
      var opener=window.open("http://localhost:9080/Ancillary/index.jsp");
  opener.postMessage('Hello', 'http://localhost:9080');
    //opener.callback(document.getElementById("textField").value);
}
 </script>
 <button id="send" onclick="Menu();">Try it !</button>'

2)儿童应用程序(接收消息)

<script>
function receiver(event) {
         if (event.origin == 'http://localhost:9080') {
         console.log(event.data+' recieved by parent');
        alert(event.data+' recieved by parent');
  }
}
   window.addEventListener("message", receiver, false);
 </script>
  <p>This is an Example!</p>

现在我正在尝试使用不同的应用程序在同一台服务器上运行。

1 个答案:

答案 0 :(得分:0)

您需要在Web Api中启用CORS。全局启用CORS的更简单和首选方法是将以下内容添加到web.xml

<init-param>
<param-name>cors.supportedHeaders</param-name>
<param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
</init-param>