我正在开发一个用于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()
回调,以便在执行之前注入/删除内容。