我正在使用基于令牌的身份验证系统的应用程序,它需要在IE9 +中工作。我在这个项目上使用jQuery 1.9.1。
到目前为止,我一直在开发Chrome,并且只是在IE9中测试应用程序。
在每次ajax调用中,如果服务器以401状态代码响应,我会有一个错误回调,它将重定向到登录屏幕。代码如下:
return $.ajax({
url: service_url+'/'+item,
type: 'GET',
dataType: 'json',
beforeSend: function (request) {
request.setRequestHeader("X-Token", $.cookie('access_token'));
},
error: function (jqXHR, status, error) {
if (jqXHR.status === 401) {
var redirect_location = encodeURIComponent(window.location.pathname+window.location.hash);
window.location = 'Login/index.html?e=Unauthorized&redirect='+redirect_location;
}
}
});
这在Chrome中运行良好,但我注意到在IE9中没有重定向发生。在开发人员工具的网络选项卡中,我清楚地看到呼叫中出现401错误:
如果我在错误回调中执行console.log(jqXHR.status)
或console.log(status)
,Chrome会返回401
。 IE9返回500
。我也尝试检查error
参数,它只返回IE9中的文字"error"
,但在Chrome中返回"Unauthorized"
。我不想总是重定向登录任何错误(我正在处理页面中的消息的服务器错误),只有当呼叫返回未经授权以强制用户登录时。
知道为什么会这样,并且有一个很好的解决方法吗?