3

我正在使用http-bindopenfire 来启用BOSH和访问该服务strophe,问题是我在 chrome 中遇到以下错误

这是控制台中的错误

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

在此处输入图像描述

这是请求

在此处输入图像描述

BOSH在openfire中启用如下

在此处输入图像描述

我尝试在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
4

1 回答 1

0

该错误No 'Access-Control-Allow-Origin' header is present on the requested resource表明您正在发出跨域 (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>

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

有关详细信息,请参阅有关此的 Converse.js 文档

于 2013-11-15T05:32:49.183 回答