2010-08-30 13 views

Répondre

1

Vous ne pouvez pas utiliser JSONP faire un POST - tout ce qu'il fait est d'insérer une balise <script src="...">, et le navigateur Déclenché une requête GET.

Peut-être que ce que vous cherchez est CORS, mais c'est seulement pris en charge par FF 3.5, IE 8 et Safari 4 et plus récent. Et le serveur doit le supporter aussi.

Sinon, vous devrez utiliser un proxy de votre serveur vers l'autre domaine.

+0

merci, vos suggestions semblent prometteuses. mais en raison du temps limité à cette tâche, j'ai décidé de continuer à utiliser GET pour le moment. – adranale

+0

Vous avez oublié de mentionner Chrome 3 ou plus récent. Au cas où cela serait utile, j'ai mis à jour l'article CORS Wikipedia avec des informations plus détaillées sur le support du navigateur que j'ai rassemblé il y a quelques jours. – ssokolow

4

Le Google APIs Library for GWT résout ce problème (pour envoyer des appels inter-domaines GWT-RPC) en utilisant la fonctionnalité de projet Shindiggadgets.rpc pour envoyer un message cross-cadre à un iframe dans la page pointant vers une page sur le serveur que vous êtes essayer de communiquer avec. Ce iframe est celui qui fait la demande, et quand il reçoit une réponse, il renvoie un autre message inter-trame.

Ceci est emballé dans GadgetsRequestBuilder.

Il devrait être assez simple d'étendre cette fonctionnalité pour faire des requêtes XHR régulières (avec une méthode POST) au lieu de requêtes GWT-RPC.

+0

merci pour votre suggestion, mais en raison du temps limité à cette tâche, j'ai décidé de continuer à utiliser GET pour le moment. – adranale

0

J'ai également eu ce problème, et j'ai dû mettre en place un système un peu farfelu pour le faire fonctionner. Heureusement, je contrôle à la fois le serveur et le client. L'appel POST définit un paramètre d'URL appelé «src» qui contient une chaîne aléatoire. Lorsque je POST au serveur, les données vont au serveur, mais je ne suis pas en mesure d'obtenir la réponse. Ce qui se passe en arrière-plan, c'est que le serveur met en cache la réponse POST avec cette clé 'src' dans un cache faible.

Je fais ensuite un appel JSONP get immédiatement après que le POST se termine avec cette même clé 'src', et il récupère le résultat.

Ce n'est pas joli, mais ça marche.