JSJaC + Openfire仅适用于本地

时间:2011-11-10 15:12:59

标签: apache xmpp openfire jsjac

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

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

我对simpleclient的参数:

所以在我的apache虚拟主机配置文件中,我有以下几行:

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

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

顺便说一句,例如,Pidgin我可以从笔记本电脑连接到远程服务器。只是JSJaC simpleclient不会这样做。所以我认为这是导致麻烦的http-bind。我会理解端口7070是否未打开,但确实如此。

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

基督教

1 个答案:

答案 0 :(得分:0)

好的,我明白了。这是一个跨域脚本问题。我开始研究JSJaC库并注意到它使XmlHttpRequests默认不会在不同的域中工作。因此,我不得不在Openfire-Server上使用Apache。我在VirtualHost配置文件中添加了以下条目:

    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地址的请求是代理问题。