У меня есть HTML-страница, которая должна отправлять запросы в веб-службу, защищенную CAS ( Central Authentication Service ), используя функции JQuery AJAX. У меня есть следующий код:
$.ajax({
type: "GET",
url: request,
dataType: "json",
complete: function(xmlHttp) {
console.log(xmlHttp);
alert(xmlHttp.status);
},
success: handleRedirects
});
Переменная request
может быть либо на сервере CAS (https://cas.mydomain.com/login?service=myServiceURL
), либо непосредственно на службу (которая затем должна быть перенаправлена обратно на CAS, чтобы получить билет службы). Firebug показывает, что запрос выполняется и возвращается как перенаправление 302. Однако функция $.ajax()
не обрабатывает перенаправление.
Я написал эту функцию, чтобы обойти это:
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);
}
};
Однако даже при этом функция handleRedirects
никогда не вызывается, а xmlHttp.status
всегда возвращает 0
. Также не похоже, что файлы cookie отправляются с вызовом cas.mydomain.com. (См. этот вопрос для аналогичной проблемы.)
Это проблема с вызовами AJAX, которые не обрабатывают перенаправления, или здесь происходит больше, чем кажется на первый взгляд?