AJAX HTTP基本身份验证解决方案



我正在开发一个用于JavaScript客户端的RESTful API。所有API调用都经过身份验证。不幸的是,如果提供了不正确的凭据,就会弹出可怕的浏览器提示。

现在,我知道在客户端没有办法抑制这种情况。幸运的是,我能够控制客户端和API。

我想保持API尽可能正典。所以我宁愿不将响应代码更改为403。作为一种替代方案,我正在考虑允许客户端抑制WWW-Authenticate标头(通过请求中的自定义标头)。似乎是它触发了提示,而不一定是401代码本身——至少在最新版本的Chrome中是这样。

有人对此有什么见解吗?它在其他浏览器中可靠吗?有什么理由让我不走这条路吗?

谢谢,

Ken

弹出窗口是一个401 Unauthorized答案,如果您使用jQuery,您可以在error()回调或ajax调用的statusCode属性中捕捉到它:

$.ajax({
    url : url,
    type : 'GET/POST/PUT/DELETE',
    data : { your data here },
    dataType : 'json/xml/html',
    statusCode : {
        200 : function(data, textStatus, jqXHR){
            // your logic here
        },                                  
        401 : function(jqXHR, textStatus, errorThrown){
            // your logic here
        }
    }
});

如果您需要对请求头执行任何编辑,请在调用中使用beforeSend()回调,以便在执行之前注入/删除内容。

最新更新