1

尝试将 Kaazing jms 版本与我的 .net 网站和 activemq 消息代理集成时,我不断收到错误消息:

无法将消息发布到http://www.xgateway.com:8001。收件人的来源http://www.x.com

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

我知道我一切都设置好了,因为我可以去www.xgateway.com:8001,我可以浏览所有文档并运行演示。我已经运行了股票行情演示并观察它完美运行。所以所有设置似乎都可以。

现在的问题是,我的 asp .net 网站也托管在同一台机器上的 IIS 7 上。我正在尝试构建托管在与 kaazing 网关连接的.net 网站(端口 80)上的 javascript 客户端。但我不断收到上述跨源错误。

在我的客户中,我按照指示引用了 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>

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

4

1 回答 1

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>

在这里您可以找到有关该主题的详细文档。

于 2011-11-21T02:47:35.787 回答