Je dois effectuer des appels SOAP à partir de javascript entre différents domaines. Du côté serveur, il y a une liste de domaines autorisés, de méthodes et d'en-têtes qui sont inclus dans la réponse par un filtre. Cela fonctionne bien (même entre différents domaines) quand le code de réponse est 200 mais quand une exception est lancée du côté du serveur l'objet xhr a l'état 0 au lieu de 500 et le responseText est vide. Lorsque vous utilisez sur le même domaine l'état et le responseText est correct.jquery - Vider responseText dans l'objet XMLHttpRequest lorsque le serveur renvoie 500
Le code correspondant est le suivant:
function onError(xhr, status, thrownError) {
alert(xhr.status);
alert(xhr.responseText);
}
$.ajax({
type: "POST",
url: SOAPClient.Proxy,
dataType: "xml",
processData: false,
data: content,
context: context,
contentType : SOAPClient.ContentType + "; " + SOAPClient.CharSet,
error: onError,
success: onSuccess,
complete: onComplete,
beforeSend: function(req) {
req.setRequestHeader("Method", "POST");
req.setRequestHeader("Content-Length", SOAPClient.ContentLength);
req.setRequestHeader("SOAPServer", SOAPClient.SOAPServer);
req.setRequestHeader("SOAPAction", soapReq.Action);
}
});
J'utilise jQuery 1.4.2. Les en-têtes autorisés sont "SOAPServer", "SOAPAction" et "Method". Je l'ai essayé dans FF 3.6.10 et Google Chrome 7.0.517.36
Merci pour votre réponse, mais je crains que cela ne fonctionnera pas (je l'ai essayé). Il peut être vu à partir des journaux que le serveur répond avec 500 et je peux également voir cela dans firebug. C'est juste que la réponse réelle (c'est-à-dire l'exception) est perdue quelque part. En attendant, j'ai construit un simple javascript avec des appels natifs (pas de jquery impliqué) et j'ai obtenu les mêmes résultats. Il semble que dans le cas d'un partage de ressources d'origine croisée, le navigateur ne transmet pas la réponse si le statut est autre que 200. J'ai trouvé un article sur ce problème lorsque le client est implémenté en flex. – Tibor
http://blog.widget-labs.com/2007/02/15/handling-web-service-exception-in-flex-code/ – Tibor
Je sais que ce n'est pas le même langage/cas mais peut-être la racine du le problème est le même. – Tibor