JSJaC + Openfire работает только локально - PullRequest
0 голосов
/ 10 ноября 2011

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

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

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

Итак, в моем файле конфигурации виртуального хоста apache есть строки:

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

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

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

Любые намеки или помощь приветствуются!

Christian

1 Ответ

0 голосов
/ 11 ноября 2011

Хорошо, я понял.Это была проблема междоменных сценариев.Я начал изучать библиотеку 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 является прокси-вещью.

...