将Kaazing与我的网站集成时遇到问题:无法将消息发布到X.收件人来源Y.

时间:2011-11-21 00:29:51

标签: html5 websocket kaazing

我一直在尝试将Kaazing jms版本与我的.net网站和activemq消息代理集成:

  

无法向http://www.xgateway.com:8001发送消息。收件人来源http://www.x.com

当我尝试构建一个由我的Asp .NET网站托管试图连接到kaazing网关的javascript客户端时。

我知道我已经设置好了,因为我可以转到www.xgateway.com:8001,我可以浏览所有文档并运行演示。我已经运行了股票代码演示,并观察它的完美运作。所以所有设置似乎都没问题。

现在的问题是,我也在同一台机器上的IIS 7上托管了我的asp .net网站。我正在尝试构建托管在我的.net网站(端口80)上的javascript客户端,它与kaazing网关连接。但我一直得到上​​面的交叉原点错误。

在我的客户端,我按照指示引用StompJms.js。我有正确设置activemq和工作以及消息代理。所有演示工作证明一切都设置正确。

我还按照文档中的说明执行了这些步骤:


复制文件GATEWAY_HOME / lib / client / javascript / PostMessageBridge.html并从源源Web服务器(http://www.example.com)提供服务;例如在http://www.example.com/bridge/PostMessageBridge.html。 注意:您必须确保文件PostMessageBridge.html托管在与Web服务器相同的源(相同的方案,主机和端口)上。

将以下标记(如第2行和第3行所示)添加到主应用程序页面的部分:

<head>
<meta name="kaazing:postMessageBridgeURL"
      content="http://www.x.com/PostMessageBridge.html" >
.
.
.
</head>

但仍然收到错误。我还缺少什么?

1 个答案:

答案 0 :(得分:2)

由于您的.NET应用程序和您的kaazing websocket网关使用的端口号不同,因此这些端口号被视为单独的站点。因此,您需要为服务指定跨站点约束。

以下是您需要添加到gateway-config.xml的示例代码段:

<service>
  <accept>ws://localhost:8001/remoteService</accept>
  <connect>tcp://localhost:61613</connect>

  <type>stomp.proxy</type>

  <auth-constraint>
    <require-role>AUTHORIZED</require-role>
  </auth-constraint>

  <cross-site-constraint>
    <allow-origin>http://localhost:8000</allow-origin>
  </cross-site-constraint>
</service>

在这里你可以找到关于这个主题的detailed documentation