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, но я не эксперт.
Мои параметры для простого клиента:
- База HTTP: http://here.domain.org/http-bind/
- JabberServer: здесь.domain.org
Итак, в моем файле Apache Virtual Host Confir у меня есть строки:
- AddDefaultCharset UTF-8
- ProxyReqests On
- ProxyPass / http-bind / http://127.0.0.1:7070/http-bind/
Так что в основном 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 является прокси-штукой.