我正在编写一些浏览器端动态功能并使用 HTTP Basic Auth 来保护一些资源。用户体验非常重要,并且是高度定制的。
这是一个简单的测试 JQuery 方法,最终将测试用户是否在表单中提供了正确的凭据:
$(document).ready(function() {
$("#submit").click(function() {
var token = Base64.encode($('#username').val() + ':' + $('#password').val());
$.ajax({
url: '/private',
method: 'GET',
async: false,
beforeSend: function(req) {
req.setRequestHeader('Authorization', 'test:password');
},
error: function(request, textStatus, error) {
if (request.status == 401) {
alert('401');
}
}
});
return false;
});
});
如果他们不被允许访问/private
,此时他们应该只看到警告框。但是,在 Firefox 上,会弹出浏览器提供的登录表单(使用新凭据重试)。Safari 不这样做。
我们希望完全控制自定义表单、淡入淡出、过渡等的体验。如何不显示 Firefox 的默认框?(如果这在我们测试 IE 时会成为一个问题,我也很想听听那里的解决方案。)