2011-01-04 8 views
2

Ich habe einen Java-REST-Webservice auf Tomcat bereitgestellt (http: // localhost: 8080/myrestfulapp/aservice /).XMLHttpRequest Cross-Origin-Ressourcenfreigabe (qooxdoo und tomcat)

In meiner Qooxdoo App versuche ich eine POST-Anfrage mit qx.io.remote.Request zu senden. Ich habe die Anwendung erstellt und auf einem Apache-HTTP-Server (http://myserver.org) bereitgestellt. Wenn ich versuche, die Anfrage zu senden, ich diesen Fehler in der JavaScript-Konsole von meinem Web-Browser (Chrome unter Linux): Herkunft http // myserver.org nicht durch erlaubt Access-Control-Allow-Origin

I crossdomain.xml in Tomats ROOT webapp, in/var/www und im Stammverzeichnis meines http-Servers hinzugefügt. Ich habe Apache-Header (a2enmod-Header) aktiviert und ich habe Access-Control-Allow-Origin "*" in der Konfigurationsdatei meines Servers hinzugefügt.

hier sendet meine qooxdoo Funktion die Anfrage:

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(); 
} 

und hier ist die myserver.org Konfigurationsdatei: 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> 

Also, wie könnte ich das Senden von Cross-URL http Anfragen von einer Qooxdoo App aktivieren zu einem Java-Backend, das auf Tomcat bereitgestellt wird?

+1

Cross-Domain-Anfrage-Steuerelement ist eine Browser-Funktion, so dass ich glaube, Sie können nichts auf der Server-Seite diesbezüglich tun. JSONP-Format kann Ihnen dabei helfen –

+1

Sie haben einige serverseitige Optionen für domänenübergreifende Unterstützung in modernen Browsern. Sehen Sie sich https://developer.mozilla.org/En/HTTP_Access_Control an – cjimti

Antwort

1

Wenn Sie versuchen, eine andere Domain mit qooxdoo zuzugreifen, müssen Sie die Eigenschaft „domänenübergreifende“ aus dem „qx.io.remote.Request“ Instanz auf „true“:

req.setCrossDomain(true); 

Weitere Details Werfen Sie einen Blick auf die API doc: http://demo.qooxdoo.org/current/apiviewer/#qx.io.remote