我正在使用http-bind
使用openfire来启用BOSH
并使用strophe
访问该服务,问题是我在Chrome中遇到以下错误
这是控制台中的错误
XMLHttpRequest无法加载
http://127.0.0.1/http-bind
。没有 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,不允许原始'http://localhost'
访问。
这是请求
我在openfire中启用了BOSH
,如下所示
我在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
答案 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