0

我们的网络上有 2 个内部(Intranet)Windows 服务器,仅可用于本地网络。安装了Spark server1,我们可以像这样查询 Jabber 信息:

http://server1/plugins/presence/status?jid=username@jabbersrv&type=text

server2Spiceworks 上安装了,我写了一个插件来查询 Jabber 状态,如下所示:

xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", "http://server1/plugins/presence/status?jid=username@jabbersrv&type=text", false );
xmlHttp.send( null );
statusStr = xmlHttp.responseText;

但是这段代码(on server2)返回一个错误:

XMLHttpRequest cannot load http://server1/plugins/presence/status?jid=username@jabbersrv&type=text. Origin https://server2 is not allowed by Access-Control-Allow-Origin.

为什么这不起作用?我有一些 VB.net 代码可以在相同的环境中完成此任务:

Dim jbrStatus As New System.Net.WebClient
Dim userStatus As String = jbrStatus.DownloadString("http://server1/plugins/presence/status?jid=username@jabbersrv&type=text")

尽管 Openfire 在server1. 由于它们是内部的(在同一个域上),这两个服务器是否应该本质上不相互信任?让它在 Windows 域和 Windows 服务器上工作的最佳方法是什么?

我尝试将 server2 域服务器添加为 server1 上的本地管理员,但没有运气。

4

2 回答 2

3

他们是否在同一个网络上并不重要。如果他们有不同的域名,XMLHttpRequests 默认不会工作。对于Cross-Origin Resource Sharing,您需要服务器发回某些标头。请注意,这仅适用于更新的浏览器。

于 2012-11-14T21:05:12.383 回答
1

这与同源政策有关

http://en.wikipedia.org/wiki/Same_origin_policy

该策略允许在源自同一站点的页面上运行的脚本无特定限制地访问彼此的方法和属性,但禁止跨不同站点的页面访问大多数方法和属性。

server1 / server2 被认为是不同的域,即使在同一个网络上。

于 2012-11-14T21:05:19.847 回答