我在写一些浏览器端的动态功能和使用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'

到标题和它就像一个魅力。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top