J'ai une page HTML qui doit faire des demandes à un service Web protégé par CAS (Central Authentication Service) en utilisant les fonctions jQuery AJAX. J'ai le code suivant:Authentification CAS et redirections avec jQuery AJAX
$.ajax({
type: "GET",
url: request,
dataType: "json",
complete: function(xmlHttp) {
console.log(xmlHttp);
alert(xmlHttp.status);
},
success: handleRedirects
});
La variable request
peut être soit sur le serveur CAS (https://cas.mydomain.com/login?service=myServiceURL
) ou directement au service (qui devrait alors rediriger le TAS pour obtenir un ticket de service). Firebug montre que la requête est en cours et qu'elle revient sous la forme d'une redirection 302. Toutefois, la fonction $.ajax()
ne gère pas la redirection.
j'ai écrit cette fonction pour contourner ce problème:
var handleRedirects = function(data, textStatus) {
console.log(data, textStatus);
if (data.redirect) {
console.log("Calling a redirect: " + data.redirect);
$.get(data.redirect, handleRedirects);
} else {
//function that handles the actual data processing
gotResponse(data);
}
};
Cependant, même avec cela, la fonction handleRedirects
ne sera jamais appelé, et le xmlHttp.status
retourne toujours 0
. Il ne semble pas non plus que les cookies soient envoyés avec l'appel cas.mydomain.com. (Voir this question pour un problème similaire.)
Est-ce un problème avec les appels AJAX qui ne traitent pas les redirections, ou y a-t-il plus de choses à faire que ce qui vous vient à l'esprit?
Avez-vous déjà trouvé une solution à ce problème? J'ai lu votre article de blog suggérant JSONP, qui est ce que j'ai lu ailleurs. Cependant, il semble que CORS est le moyen de contourner ce problème, mais je n'arrive toujours pas à obtenir les redirections 302 pour fonctionner correctement. – aasukisuki