据我所知,http 重定向完全由浏览器处理。因此,如果您无权访问后端,则无法检测到重定向。
当您被重定向到登录页面时,您的会话似乎已过期,您需要再次进行身份验证。
您可以创建一个函数,在实际响应中检测到登录页面后立即发送登录信息。
sendLogin: function ( params, successCallback, failureCallback, scope ) {
Ext.Ajax.request({
url: "loginurl",
params: params,
success: function ( response, options ) {
successCallback.call( scope || this, response, options );
},
failure: function ( response, options ) {
failureCallback.call( scope || this, response, options );
}
});
}
doRequest: function ( params, successCalback, failureCallback, scope ) {
var me = this;
Ext.Ajax.request({
url: "someurl",
success: function ( response, options ) {
if ( isLoginPage( response ) ) {
this.sendLogin(
loginParams,
function ( successResponse, successOptions ) {
me.doRequest( params, successCallback, failureCallback, scope );
},
function ( failureResponse, failureOptions ) {
failureCallback.call( scope || this, failureResponse, failureOptions );
},
me
);
} else {
successCallback.call( scope || this, response, options );
}
},
failure: function ( response, options ) {
failureCallback.call ( scope || this, response, options );
}
});
}
使用doRequset
发送您的实际请求。成功案例检查响应是否为登录页面。如果是,它会发送登录请求。当登录请求成功时,将再次调用 doRequest 函数及其参数。