使用Jquery(最新),IBM WebSphere 6.1 Server,Java JDK 1.5
对于AJAX调用有点挑剔。我的所有AJAX调用都是URL,这些URL是我的web.xml安全约束的一部分,需要进行身份验证。身份验证是基于标准格式的j_security,因此在对安全/受保护URL的每个请求中,容器(WebSphere)将拦截该调用并查看身份验证是否良好以及如果身份验证不正确,它将自动重定向到登录页面。我认为非常简单/标准和预期。
看看以下代码。无论客户端的身份验证状态(经过身份验证,未经过身份验证,超时),对该URL的GET调用(或发布,无关紧要)总是返回200.因此,确实没有任何简单的方法来判断我们是否是是否重定向,除非我们评估服务器返回的数据。
也许我错过了什么?这看起来真的很复杂。我发现看到j_security重定向的唯一可靠方法是从服务器获取数据并执行dom搜索j_password字段。但这似乎效率很低,因为我必须为我的应用程序中的每个 AJAX调用做些什么。我们的一些AJAX调用是返回JSON的URL,有些返回HTML。
$.ajax({
type: 'GET',
url: '<c:url value="/secure/supersecretthingy.html"/>',
dataType: 'html',
data:{
requestDate: requestDate
},
beforeSend: function(request) {
},
complete: function(request) {
},
success: function(data, textStatus, response) {
var ll = $('<div id="#wee" class=""></div>').html(data).find("#j_password").length;
//console.log(ll);
$("#wee").remove();
if ( ll != 0) {
//console.log('we timed out says websphere!');
window.location = '<c:url value="${GLOBAL_AJAX_TIMEOUT_PAGE}" />';
} else {
//console.log("not timed out");
dialogDiv.html(data);
}
},
error: function(xhr, textStatus, errorThrown) {
//console.log(errorThrown);
}
});
答案 0 :(得分:2)