Tengo una página HTML que necesita realizar solicitudes a un servicio web CAS-protected (Central Authentication Service) utilizando las funciones jQuery AJAX. Tengo el siguiente código:Autenticación CAS y redireccionamientos con jQuery AJAX
$.ajax({
type: "GET",
url: request,
dataType: "json",
complete: function(xmlHttp) {
console.log(xmlHttp);
alert(xmlHttp.status);
},
success: handleRedirects
});
La variable request
puede ser o bien al servidor CAS (https://cas.mydomain.com/login?service=myServiceURL
) o directamente al servicio (que luego debe volver a redirigir CAS para obtener un ticket de servicio). Firebug muestra que la solicitud se está realizando y que vuelve como una redirección 302. Sin embargo, la función $.ajax()
no está manejando la redirección.
escribí esta función para evitar esto:
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);
}
};
Sin embargo, a pesar de esto, la función handleRedirects
nunca se llama, y la xmlHttp.status
siempre devuelve 0
. Tampoco parece que las cookies se envíen con la llamada a cas.mydomain.com. (Consulte this question para un problema similar.)
¿Esto es un problema con las llamadas AJAX que no manejan redirecciones, o hay más cosas aquí que lo que parece?
¿Alguna vez encontró una solución a este problema? Leí tu publicación de blog sugiriendo JSONP, que es lo que he leído en otro lugar. Sin embargo, parece que CORS es la forma de evitar esto, pero todavía no puedo hacer que los redireccionamientos 302 funcionen correctamente. – aasukisuki