我有一個HTML頁面需要使用jQuery AJAX函數向受CAS保護的(Central Authentication Service)Web服務發出請求。我有以下代碼:CAS認證和使用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調用發送。 (請參閱this question以解決類似的問題。)
這是AJAX調用不處理重定向的問題,還是有更多的事情在這裏發生?
你有沒有找到解決這個問題的解決方案?我閱讀了您的博客文章,提供JSONP,這是我在其他地方讀過的。但是,看起來像CORS是解決這個問題的方法,但我仍然無法使302重定向正常工作。 – aasukisuki 2012-12-22 03:19:49