JSJaC+Openfire работает только локально

До сих пор я разработал полностью локально, имея все (Apache, Openfire, приложение JSJaC) на моем ноутбуке, работающее вполне нормально. Теперь я хочу использовать удаленный сервер для Apache/Openfire. Я сделал в основном те же шаги, вкл. весь материал http-bind. Я проверяю настройку с помощью simpleclient.html, предоставленного JSJaC.

Теперь вот в чем дело, если я использую simpleclient непосредственно на удаленном сервере - например, http://here.domain.org/simpleclient.html - это работает. Если я использую его локально - например, http://[local_machine]/simpleclient.html - и с теми же настройками я получаю 503 (служба недоступна). Кажется, это больше проблема с сетью /Apache, чем с Openfire/JSJaC, но я не эксперт.

Мои параметры для простого клиента:

Итак, в моем файле Apache Virtual Host Confir у меня есть строки:

Так что в основном http-связка работает, так как я могу подключиться, когда simpleclient.html находится на сервере. Что я пробовал до сих пор:

  • проверил, если 7070 открыт от внешнего: да
  • проверил etc/hosts - здесь соответствующие строки
    • 127.0.0.1 localhost
    • 123.123.123.123 здесь.домен.орг здесь
  • проверил Apache conf на предмет ограничений: не могу найти ни одного, в основном у меня везде есть "Разрешить от всех" (но я не совсем уверен, где искать)

Кстати, с помощью, например, Pidgin я могу подключиться с моего ноутбука к удаленному серверу. Просто JSJaC простой клиент не подойдет. Поэтому я предполагаю, что проблема связана с http-связыванием. Я бы понял, если бы порт 7070 не был открыт, но это так.

Любые советы или помощь очень ценятся!

Кристиан

1 ответ

Решение

Ладно, я понял. Это была проблема междоменных сценариев. Я начал изучать библиотеку JSJaC и заметил, что она создает XmlHttpRequests, которые по умолчанию не будут работать в разных доменах. Поэтому мне пришлось разрешить это с Apache на Openfire-Server. Я добавил следующие записи в conf-файл 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 является прокси-штукой.

Другие вопросы по тегам