Совместное использование ресурсов XMLHttpRequest между источниками (qooxdoo и tomcat)

У меня есть веб-сервис Java REST, развернутый на tomcat (http://localhost:8080/myrestfulapp/aservice/).

В моем приложении qooxdoo я пытаюсь отправить запрос POST, используя qx.io.remote.Request. Я создал приложение и развернул его на HTTP-сервере Apache (с именем http://myserver.org). Когда я пытаюсь отправить запрос, я получаю эту ошибку в консоли javascript моего веб-браузера (Chrome в Linux): Origin http//myserver.org не разрешен Access-Control-Allow-Origin.

Я добавил crossdomain.xml в веб-приложение ROOT tomcat, в /var/www и в корневой каталог моего http-сервера. Я включил заголовки apache (заголовки a2enmod) и добавил Access-Control-Allow-Origin «*» в файл конфигурации моего сервера.

вот моя функция qooxdoo, отправляющая запрос:

envoyer : function(id, nom, prenom, poste) 
{
  var url = "http://localhost:8080/helloworld/enregistrer";
  var donnees = "{ \"id\":" + id + ", \"nom\":\"" + nom + "\", \"prenom\":\"" + prenom + "\", \"poste\":\""+poste +"\" }";
  alert(donnees);
  var req = new qx.io.remote.Request(url, "POST", "application/json");
  req.setData(donnees);

  req.addListener("completed", function(e) {
            alert(e.getContent());
  });
  req.send();
}

а вот файл конфигурации myserver.org: ServerAdmin webmaster@localhost serverName myserver.org

DocumentRoot /home/jihedamine/HttpServer
<Directory />
    Options FollowSymLinks
    AllowOverride All
</Directory>
<Directory /home/jihedamine/HttpServer/>
    Header set Access-Control-Allow-Origin "*"
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
</Directory>

So how could I enable sending cross origin http requests from a qooxdoo app to a java backend deployed on tomcat ?


person Jihed Amine    schedule 04.01.2011    source источник
comment
Контроль междоменных запросов — это функция браузера, поэтому я не думаю, что вы можете что-то сделать на стороне сервера в этом отношении. формат jsonp может помочь вам в этом   -  person Arun P Johny    schedule 04.01.2011
comment
У вас есть некоторые варианты на стороне сервера для междоменной поддержки в современных браузерах. Ознакомьтесь с developer.mozilla.org/En/HTTP_Access_Control.   -  person cjimti    schedule 12.01.2011


Ответы (1)


Когда вы пытаетесь получить доступ к другому домену с помощью qooxdoo, вы должны установить для свойства «crossDomain» из вашего экземпляра «qx.io.remote.Request» значение «true»:

req.setCrossDomain(true);

Дополнительные сведения см. в документе API: http://demo.qooxdoo.org/current/apiviewer/#qx.io.remote

person Christian Hagendorn    schedule 10.01.2011