响应代码401在jquery ajax错误处理程序之前触发基本身份验证

Jat*_*tin 12 jquery asp.net-mvc-3

我有一个场景,我必须使用"表单身份验证"处理ajax请求的身份验证.根据我之前的stackoverflow帖子中的一些搜索和帮助,我决定使用此处描述的方法.

我们的想法是为未经身份验证的请求发回401响应,然后在AJAX错误处理程序中处理它.所以我的ASP.net MVC3布局页面中有一个AJAX错误处理程序,它在未经身份验证的ajax请求收到401响应时将浏览器重定向到登录页面.这是ajax错误处理程序.

$(document).ajaxError(function (event, jqXHR, ajaxSettings, thrownError) {
    if (jqXHR.status == "401") {
        window.location.replace(loginUrl);
    }
    ....
});
Run Code Online (Sandbox Code Playgroud)

这一切都适用于我的本地IIS 7.5服务器.但不幸的是,在托管我的站点的服务器上,在AJAX错误处理程序运行并将浏览器重定向到登录页面之前,我在未经身份验证的ajax请求(例如会话超时)上获得了基本身份验证弹出窗口.当我通过按取消按钮取消"需要验证"弹出窗口时,AJAX错误处理程序然后运行,我被重定向到登录页面.

那么,为什么浏览器在运行AJAX错误处理程序之前会显示身份验证弹出窗口?

编辑:托管服务器正在运行IIS 6.

小智 0

尝试从响应中删除 WWW-Authenticate 标头。