2013-05-20 6 views
1

J'ai une application Web dans un serveur cloud. Un de mes contrôleurs de mon application web externalise les URL accessibles via une application mobile (en utilisant JavaScript, j'utilise Titanium pour développer pour Android et iOS). Je peux accéder aux méthodes GET sans aucun problème et j'obtiens ce que je désire, mais quand j'appelle les méthodes POST pour envoyer des informations à traiter, je reçois Bad Server - Erreur HTTP. Pour protéger mes URL, j'utilise l'authentification BASIC configurée dans mon application et dans JBoss (fichier standalone.xml). Lorsque j'accède aux méthodes POST à ​​partir d'un formulaire (en utilisant JQuery Ajax) dans l'application Web, c'est OK, donc je pense que c'est un problème inter-domaine.POST interdomaine dans JBoss AS 7.1.1

Y a-t-il une configuration à effectuer dans JBoss afin que mon application Web puisse recevoir des appels POST de tous les autres domaines (bien sûr, en fournissant la paire nom d'utilisateur/mot de passe correcte).

Merci d'avance!

+1

Vous dites que l'appel Web fonctionne très bien si vous utilisez GET, mais si vous l'allumez POST il échoue? Créez une méthode de service Web de base avec peut-être aucun paramètre et effectuez l'appel POST. Je serais plus susceptible de deviner que votre problème est avec les paramètres que vous passez. Les transmettez-vous dans la chaîne de requête ou dans le corps du message? – Martin

+0

Je seconde @Martin. Si cela fonctionne pour 'GET's, bien que cela ne soit pas garanti, il devrait aussi fonctionner pour' POST'. N'avez-vous pas dû faire une configuration pour activer 'GET's? Êtes-vous sûr à 500% que vous envoyez tout ce dont le POST a besoin? – acdcjunior

Répondre

1

Généralement, ces problèmes inter-domaines concernent le navigateur et non le serveur. Le navigateur limitera votre capacité à utiliser les mises à jour AJAX dans le domaine de la page sur laquelle vous vous trouvez. Il existe certaines solutions de contournement telles que JSONP, mais je ne sais pas si cela peut fonctionner pour POST.

Nous avons décidé d'utiliser une bibliothèque proxy tierce HTTP Proxy Servlet. Cette servlet proxy vous permet de POST comme si votre domaine accessible localement avec un ajout web.xml simple. En faisant cela, nous ne devons jamais jouer avec JSONP non plus, juste JSON fonctionne correctement.

Nous l'utilisons pour transférer plusieurs chemins différents vers plusieurs serveurs différents (vous pouvez avoir plus d'un redirecteur utilisant cette méthode dans la même application web). Notre web.xml est juste une série de correspondances de servlet (un pour chaque service RESTful externe pointant vers les chemins de base):

<servlet> 
     <servlet-name>MyOneProxy</servlet-name> 
     <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class> 
     <init-param> 
     <param-name>targetUri</param-name> 
     <param-value>http://external-web-app.com/basePath</param-value> 
     </init-param> 
     <init-param> 
     <param-name>log</param-name> 
     <param-value>true</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>MyOneProxy</servlet-name> 
     <url-pattern>/internalBasePath/*</url-pattern> 
    </servlet-mapping> 
Questions connexes