在openfire中访问BOSH时出现Access-Control-Allow-Origin错误

时间:2013-11-14 15:48:01

标签: openfire strophe bosh

我正在使用http-bind使用openfire来启用BOSH并使用strophe访问该服务,问题是我在Chrome中遇到以下错误

这是控制台中的错误

  

XMLHttpRequest无法加载http://127.0.0.1/http-bind。没有   请求中存在“Access-Control-Allow-Origin”标头   资源。因此,不允许原始'http://localhost'访问。

enter image description here

这是请求

enter image description here

我在openfire中启用了BOSH,如下所示

enter image description here

我在apache配置文件httpd.conf中尝试过以下操作但没有效果

<Proxy /http-bind>
        Order allow,deny
        Allow from all
</Proxy>

ProxyPass /http-bind http://127.0.0.1:7070/http-bind
ProxyPassReverse /http-bind http://127.0.0.1:7070/http-bind

1 个答案:

答案 0 :(得分:0)

错误No 'Access-Control-Allow-Origin' header is present on the requested resource表示您正在发出Cross-domain (CORS)请求,并且无法使用必要的CORS标头。

您正在发出跨域请求,因为BOSH服务(即http-bind)在与您的网站不同的端口上提供。

我在OpenFire的HTTP绑定设置中看到您启用了CORS。也许您使用的浏览器不支持CORS? (比如IE9)。

在任何情况下,您都可以通过代替使用CORS来解决所有浏览器的问题,反向代理http-bind地址与提供HTML的域和端口相同。

Apache中的这个代码段将为您完成:(我假设您在端口80上为该站点提供服务)。

<VirtualHost *:80>
    ServerName localhost
    RewriteEngine On
    RewriteRule ^/http-bind(.*) http://localhost:7070/http-bind$1 [P,L]
</VirtualHost>

然后,您可以在与站点本身相同的域(和端口)上访问BOSH服务(即http-bind)。

有关详细信息,请参阅Converse.js documentation on this