如何通过HTTP Basic Auth和JQuery AJAX来阻止Firefox提示用户名/密码?
我正在编写一些浏览器端的动态功能,并使用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时遇到这个问题,我也很想在那里听到解决方案。)
如果您还没有阅读:
我如何禁止浏览器的验证对话框?
看起来不太有希望:)
解决方案是将WWW-Authenticate
标头设置为Basic
以外的其他标头。 例如将其设置为:
WWW-Authenticate: None
要么
WWW-Authenticate: FormBased
如果您使用基于表单的登录。 然后浏览器不会显示登录窗口。
不幸的是,我在这里遇到了同样的问题。
在我看来,浏览器不应该提示xmlhttprequest。 我真的希望有人会推动,导致人们真的想转移到jQuery的身份验证需求。
那么这里是我可以给你的帮助,我发现了这个jQuery Digest的东西,我不知道它的真正作用或者其他什么,但是如果有人能够以正确的方式使用这些代码,我们可以有一个jQuery文摘系统。
https://www.openhub.net/p/digestj
我想用这个方便的新AuthDigestDomain选项,我们可以重写上面的脚本或其他任何东西,并将安全区域“链接”在一起,我们可以一劳永逸地解决这个问题。 那么...祝你好运=)
链接地址: http://www.djcxy.com/p/71829.html上一篇: How do I keep Firefox from prompting for username/password with HTTP Basic Auth with JQuery AJAX?
下一篇: java.io.IOException: Received authentication challenge is null in ICS 4.0.3