如何保持火狐从HTTP基本验证与jQuery AJAX提示输入用户名/密码?
-
06-09-2019 - |
题
我在写一些浏览器端的动态功能和使用HTTP基本认证来保护一些资源。用户体验是非常重要的,并且高度定制
下面是一个简单的测试方法的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浏览器,我很乐意听到的解决方案在那里。)
解决方案
其他提示
在解决方案是将WWW-Authenticate
头设定为比Basic
以外的内容。例如,它设置为:
WWW-Authenticate: None
或
WWW-Authenticate: FormBased
如果使用基于形式登录。然后,浏览器不会告诉你一个登录窗口。
不幸的是,我在这里打了同样的问题。
在我看来,浏览器不应该给出一个XMLHttpRequest提示。我真的希望有人能推动这项事业的人真想要移动到jQuery的为他们的身份验证需求。
那么这里就是帮助我可以给你,我发现这个jQuery的精华的东西,我不知道它确实或任何东西,但如果有人能利用这个代码正确的方式,我们可以有一个jquery摘要身份验证系统
https://www.openhub.net/p/digestj
我想用这个方便的新AuthDigestDomain选项,我们可以有上面的脚本改写或什么,并有保安区“链接”在一起,我们可以得到过去的这个问题一劳永逸。嗯...最好的运气=)
我在什么地方找到这个认证弹出问题的解决方法。
WWW-Authenticate: None
不为我工作,但我已经添加了
'Authorization': 'Basic'
到标题和它就像一个魅力。
不隶属于 StackOverflow