0

到目前为止,我完全在本地开发,在我的笔记本电脑上安装了所有东西(Apache、Openfire、JSJaC 应用程序),运行良好。现在我想为 Apache/Openfire 使用远程服务器。我做了基本相同的步骤,包括。整个 http-bind 的东西。我使用 JSJaC 提供的 simpleclient.html 测试设置。

现在这是交易,如果我直接在远程服务器上使用 simpleclient - 例如,http ://here.domain.org/simpleclient.html - 它可以工作。如果我在本地使用它——例如,http://[local_machine]/simpleclient.html——并且使用相同的设置,我会得到一个 503(服务不可用)。这似乎更像是网络/Apache 问题而不是 Openfire/JSJaC 问题,但我不是专家。

我的 simpleclient 参数:

因此,在我的 apache 虚拟主机 conf 文件中,我有以下几行:

所以基本上http绑定是有效的,因为当simpleclient.html驻留在服务器上时我可以连接。到目前为止我尝试了什么:

  • 检查 7070 是否从外部打开:是
  • 检查 etc/hosts - 这里是相关行
    • 127.0.0.1 本地主机
    • 123.123.123.123 这里.domain.org 这里
  • 检查 Apache conf 的限制:找不到任何限制,基本上我到处都有“允许所有人”(但我不完全确定在哪里看)

顺便说一句,使用 Pidgin,我可以从我的笔记本电脑连接到远程服务器。只是 JSJaC simpleclient 不行。所以我认为是 http-bind 造成了麻烦。如果端口 7070 未打开,我会理解,但确实如此。

非常感谢任何提示或帮助!

基督教

4

1 回答 1

0

好,我知道了。这是一个跨域脚本问题。我开始研究 JSJaC 库并注意到它生成的 XmlHttpRequests 默认情况下无法跨不同的域工作。因此,我不得不在 Openfire-Server 上允许 Apache 这样做。我在 VirtualHost conf 文件中添加了以下条目:

    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Methods "POST, GET, OPTIIONS"
    Header always set Access-Control-Allow-Credentials true
    Header always set Access-Control-Allow-Headers "Content-Type, *"

当然,mod_headers必须为此加载模块。

我不确定实际需要哪些条目,我没有尝试每种组合。我认为always是必要的,因为对 http-bind 地址的请求是一个代理。

于 2011-11-11T11:36:05.240 回答