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

时间:2012-09-07 16:22:10

标签: javascript ajax rest authentication

我正在使用RESTful API与Jav​​aScript客户端一起使用。所有API调用都经过身份验证。不幸的是,如果提供的凭据不正确,则会弹出可怕的浏览器提示。

现在,我知道在客户端无法抑制此问题。幸运的是,我控制着客户端和API。

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

有没有人对此有任何见解?在其他浏览器中可靠吗?我为什么不走这条路?

谢谢,

1 个答案:

答案 0 :(得分:0)

弹出窗口是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()回调,以便在执行之前注入/删除内容。